1 package com.xtremelabs.robolectric.shadows; 2 3 4 import android.database.sqlite.SQLiteQueryBuilder; 5 import com.xtremelabs.robolectric.WithTestDefaultsRunner; 6 import org.junit.Before; 7 import org.junit.Test; 8 import org.junit.runner.RunWith; 9 10 import static org.hamcrest.CoreMatchers.equalTo; 11 import static org.junit.Assert.assertThat; 12 13 @RunWith(WithTestDefaultsRunner.class) 14 public class SQLiteQueryBuilderTest { 15 16 SQLiteQueryBuilder builder; 17 18 @Before setUp()19 public void setUp() throws Exception { 20 builder = new SQLiteQueryBuilder(); 21 } 22 23 @Test testDistinct()24 public void testDistinct() { 25 String sql = SQLiteQueryBuilder.buildQueryString( 26 true, 27 "table_name", 28 new String[]{"id", "name"}, 29 null, null, null, null, null); 30 assertThat(sql, equalTo("SELECT DISTINCT id, name FROM table_name")); 31 32 } 33 34 @Test testSelectColumn()35 public void testSelectColumn() { 36 String sql = SQLiteQueryBuilder.buildQueryString( 37 false, 38 "table_name", 39 new String[]{"id"}, 40 null, null, null, null, null); 41 assertThat(sql, equalTo("SELECT id FROM table_name")); 42 } 43 44 @Test testSelectColumns()45 public void testSelectColumns() { 46 String sql = SQLiteQueryBuilder.buildQueryString( 47 false, 48 "table_name", 49 new String[]{"id", "name"}, 50 null, null, null, null, null); 51 assertThat(sql, equalTo("SELECT id, name FROM table_name")); 52 } 53 54 @Test testSelectAllColumns()55 public void testSelectAllColumns() { 56 String sql = SQLiteQueryBuilder.buildQueryString( 57 false, 58 "table_name", 59 null, null, null, null, null, null); 60 assertThat(sql, equalTo("SELECT * FROM table_name")); 61 } 62 63 @Test testWhereClause()64 public void testWhereClause() { 65 String sql = SQLiteQueryBuilder.buildQueryString( 66 false, 67 "table_name", 68 new String[]{"person", "department", "division"}, 69 "(id = 2 AND name = 'Chuck')", null, null, null, null); 70 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck')")); 71 } 72 73 @Test testEmptyWhereClause()74 public void testEmptyWhereClause() { 75 String sql = SQLiteQueryBuilder.buildQueryString( 76 false, 77 "table_name", 78 new String[]{"person", "department", "division"}, 79 null, "person", null, null, null); 80 assertThat(sql, equalTo("SELECT person, department, division FROM table_name GROUP BY person")); 81 } 82 83 @Test testGroupBy()84 public void testGroupBy() { 85 String sql = SQLiteQueryBuilder.buildQueryString( 86 false, 87 "table_name", 88 new String[]{"person", "department", "division"}, 89 "(id = 2 AND name = 'Chuck')", "person", null, null, null); 90 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person")); 91 } 92 93 @Test testEmptyGroupBy()94 public void testEmptyGroupBy() { 95 String sql = SQLiteQueryBuilder.buildQueryString( 96 false, 97 "table_name", 98 new String[]{"person", "department", "division"}, 99 "(id = 2 AND name = 'Chuck')", null, "SUM(hours) < 20", null, null); 100 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') HAVING SUM(hours) < 20")); 101 } 102 103 @Test testHaving()104 public void testHaving() { 105 String sql = SQLiteQueryBuilder.buildQueryString( 106 false, 107 "table_name", 108 new String[]{"person", "department", "division"}, 109 "(id = 2 AND name = 'Chuck')", "person", "SUM(hours) < 20", null, null); 110 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person HAVING SUM(hours) < 20")); 111 } 112 113 @Test testEmptyHaving()114 public void testEmptyHaving() { 115 String sql = SQLiteQueryBuilder.buildQueryString( 116 false, 117 "table_name", 118 new String[]{"person", "department", "division"}, 119 "(id = 2 AND name = 'Chuck')", "person", null, "id ASC", null); 120 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person ORDER BY id ASC")); 121 } 122 123 @Test testSortOrder()124 public void testSortOrder() { 125 String sql = SQLiteQueryBuilder.buildQueryString( 126 false, 127 "table_name", 128 new String[]{"person", "department", "division"}, 129 "(id = 2 AND name = 'Chuck')", "person", "SUM(hours) < 20", "id ASC", null); 130 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person HAVING SUM(hours) < 20 ORDER BY id ASC")); 131 } 132 133 @Test testEmptySortOrder()134 public void testEmptySortOrder() { 135 String sql = SQLiteQueryBuilder.buildQueryString( 136 false, 137 "table_name", 138 new String[]{"person", "department", "division"}, 139 "(id = 2 AND name = 'Chuck')", "person", "SUM(hours) < 20", null, "10"); 140 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person HAVING SUM(hours) < 20 LIMIT 10")); 141 } 142 143 @Test testLimit()144 public void testLimit() { 145 String sql = SQLiteQueryBuilder.buildQueryString( 146 false, 147 "table_name", 148 new String[]{"person", "department", "division"}, 149 "(id = 2 AND name = 'Chuck')", "person", "SUM(hours) < 20", "id ASC", "10"); 150 assertThat(sql, equalTo("SELECT person, department, division FROM table_name WHERE (id = 2 AND name = 'Chuck') GROUP BY person HAVING SUM(hours) < 20 ORDER BY id ASC LIMIT 10")); 151 } 152 } 153