13fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalapackage com.xtremelabs.robolectric.tester.android.database;
23fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
33fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport android.content.ContentResolver;
43fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport android.net.Uri;
53fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport com.xtremelabs.robolectric.Robolectric;
63fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
73fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport com.xtremelabs.robolectric.shadows.ShadowContentResolver;
83fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport org.junit.Before;
93fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport org.junit.Test;
103fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport org.junit.runner.RunWith;
113fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
123fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport java.util.ArrayList;
133fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
143fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
153fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport static org.hamcrest.CoreMatchers.equalTo;
163fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalaimport static org.junit.Assert.assertThat;
173fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
183fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala@RunWith(WithTestDefaultsRunner.class)
193fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawalapublic class SimpleTestCursorTest {
203fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    private Uri uri;
213fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    private SimpleTestCursor cursor;
223fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    private ContentResolver contentResolver;
233fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
243fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    @Before
253fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    public void setup() throws Exception {
263fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        contentResolver = Robolectric.application.getContentResolver();
273fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        ShadowContentResolver shadowContentResolver = shadowOf(contentResolver);
283fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        uri = Uri.parse("http://foo");
293fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        cursor = new SimpleTestCursor();
303fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        shadowContentResolver.setCursor(uri, cursor);
313fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        ArrayList<String> columnNames = new ArrayList<String>();
323fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        columnNames.add("stringColumn");
333fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        columnNames.add("longColumn");
343fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        cursor.setColumnNames(columnNames);
353fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    }
363fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
373fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    @Test
383fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    public void doingQueryShouldMakeQueryParamsAvailable() throws Exception {
393fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        contentResolver.query(uri, new String[]{"projection"}, "selection", new String[]{"selection"}, "sortOrder");
403fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.uri, equalTo(uri));
413fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.projection[0], equalTo("projection"));
423fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.selection, equalTo("selection"));
433fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.selectionArgs[0], equalTo("selection"));
443fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.sortOrder, equalTo("sortOrder"));
453fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    }
463fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
473fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    @Test
483fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    public void canGetStringsAndLongs() throws Exception {
493fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        cursor.setResults(new Object[][]{new Object[]{"aString", 1234L}});
503fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.moveToNext(), equalTo(true));
513fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.getString(cursor.getColumnIndex("stringColumn")), equalTo("aString"));
523fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.getLong(cursor.getColumnIndex("longColumn")), equalTo(1234L));
533fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    }
543fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
553fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    @Test
563fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    public void moveToNextAdvancesToNextRow() throws Exception {
573fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        cursor.setResults(new Object[][] { new Object[] { "aString", 1234L }, new Object[] { "anotherString", 5678L }});
583fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.moveToNext(), equalTo(true));
593fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.moveToNext(), equalTo(true));
603fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.getString(cursor.getColumnIndex("stringColumn")), equalTo("anotherString"));
613fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.getLong(cursor.getColumnIndex("longColumn")), equalTo(5678L));
623fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    }
633fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala
643fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    @Test
653fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    public void closeIsRemembered() throws Exception {
663fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        cursor.close();
673fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala        assertThat(cursor.getCloseWasCalled(), equalTo(true));
683fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala    }
693fbab426eba539805a7eeb4d1ae8fb29d2a6f40fBrian Colvin & Rick Kawala}
70