Home | History | Annotate | Download | only in util
      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