1 package com.xtremelabs.robolectric.util; 2 3 import android.content.ContentValues; 4 import android.database.sqlite.SQLiteDatabase; 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 com.xtremelabs.robolectric.util.SQLite.*; 11 import static org.hamcrest.CoreMatchers.equalTo; 12 import static org.junit.Assert.assertThat; 13 14 @RunWith(WithTestDefaultsRunner.class) 15 public class SQLite_Test { 16 ContentValues values; 17 @Before 18 public void setUp() throws Exception { 19 String byteString = "byte_string"; 20 byte[] byteData = byteString.getBytes(); 21 22 values = new ContentValues(); 23 values.put("name", "Chuck"); 24 values.put("int_value", 33); 25 values.put("float_value", (float) 1.5); 26 values.put("byte_data", byteData); 27 } 28 29 @Test 30 public void testBuildInsertString() throws Exception { 31 SQLite.SQLStringAndBindings insertString = buildInsertString("table_name", values, SQLiteDatabase.CONFLICT_NONE); 32 assertThat(insertString.sql, equalTo("INSERT INTO table_name (float_value, byte_data, name, int_value) VALUES (?, ?, ?, ?);")); 33 SQLiteTestHelper.verifyColumnValues(insertString.columnValues); 34 } 35 36 @Test 37 public void testBuildUpdateString() { 38 SQLite.SQLStringAndBindings insertString = buildUpdateString("table_name", values, "id=?", new String[]{"1234"}); 39 assertThat(insertString.sql, equalTo("UPDATE table_name SET float_value=?, byte_data=?, name=?, int_value=? WHERE id='1234';")); 40 SQLiteTestHelper.verifyColumnValues(insertString.columnValues); 41 } 42 43 @Test 44 public void testBuildDeleteString() { 45 String deleteString = buildDeleteString("table_name", "id=?", new String[]{"1234"}); 46 assertThat(deleteString, equalTo("DELETE FROM table_name WHERE id='1234';")); 47 } 48 49 @Test 50 public void testBuildWhereClause() { 51 String whereClause = buildWhereClause("id=? AND name=? AND int_value=?", new String[]{"1234", "Chuck", "33"}); 52 assertThat(whereClause, equalTo("id='1234' AND name='Chuck' AND int_value='33'")); 53 } 54 55 @Test 56 public void testBuildColumnValuesClause() { 57 SQLStringAndBindings columnValuesClause = buildColumnValuesClause(values); 58 59 assertThat(columnValuesClause.sql, equalTo("(float_value, byte_data, name, int_value) VALUES (?, ?, ?, ?)")); 60 SQLiteTestHelper.verifyColumnValues(columnValuesClause.columnValues); 61 } 62 63 @Test 64 public void testBuildColumnAssignmentsClause() { 65 SQLStringAndBindings columnAssignmentsClause = buildColumnAssignmentsClause(values); 66 67 assertThat(columnAssignmentsClause.sql, equalTo("float_value=?, byte_data=?, name=?, int_value=?")); 68 SQLiteTestHelper.verifyColumnValues(columnAssignmentsClause.columnValues); 69 } 70 } 71