1b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesipackage com.xtremelabs.robolectric.shadows;
2b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
3b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
4b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport android.database.sqlite.SQLiteCursor;
5b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport com.xtremelabs.robolectric.Robolectric;
6b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
7b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport com.xtremelabs.robolectric.util.DatabaseConfig;
8b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport org.junit.After;
9b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport org.junit.Before;
10b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport org.junit.Test;
11b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport org.junit.runner.RunWith;
12b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
13b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport java.sql.Connection;
14b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport java.sql.PreparedStatement;
15b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport java.sql.ResultSet;
16b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport java.sql.Statement;
17b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
18b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport static org.hamcrest.CoreMatchers.equalTo;
19b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport static org.hamcrest.CoreMatchers.notNullValue;
20b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawalaimport static org.junit.Assert.assertThat;
21b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
22b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi@RunWith(WithTestDefaultsRunner.class)
23b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesipublic class SQLiteCursorTest {
243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private Connection connection;
263f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private ResultSet resultSet;
273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private SQLiteCursor cursor;
283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Before
303f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void setUp() throws Exception {
31b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken    	connection = DatabaseConfig.getMemoryConnection();
323f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
333f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        Statement statement = connection.createStatement();
343f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        statement.execute("CREATE TABLE table_name(" +
35b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken                "id INTEGER PRIMARY KEY, name VARCHAR(255), long_value BIGINT," +
36b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala                "float_value REAL, double_value DOUBLE, blob_value BINARY, clob_value CLOB );");
373f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
383f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        addPeople();
393f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupCursor();
403f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
413f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
423f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @After
433f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void tearDown() throws Exception {
443f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        connection.close();
453f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
463f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
473f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
483f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnNames() throws Exception {
493f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        String[] columnNames = cursor.getColumnNames();
503f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
513f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertColumnNames(columnNames);
523f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
533f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
543f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
553f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnNamesEmpty() throws Exception {
563f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
573f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        String[] columnNames = cursor.getColumnNames();
583f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
593f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        // Column names are present even with an empty result.
603f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(columnNames, notNullValue());
613f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertColumnNames(columnNames);
623f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
633f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
643f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
653f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndex() throws Exception {
663f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndex("id"), equalTo(0));
673f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndex("name"), equalTo(1));
683f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
693f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
703f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
713f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexNotFound() throws Exception {
723f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndex("Fred"), equalTo(-1));
733f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
743f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
753f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
763f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexEmpty() throws Exception {
773f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
783f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
793f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndex("id"), equalTo(0));
803f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndex("name"), equalTo(1));
813f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
823f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
833f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
843f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexOrThrow() throws Exception {
853f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndexOrThrow("id"), equalTo(0));
863f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndexOrThrow("name"), equalTo(1));
873f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
883f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
893f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test(expected = IllegalArgumentException.class)
903f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexOrThrowNotFound() throws Exception {
913f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.getColumnIndexOrThrow("Fred");
923f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
933f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
943f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
953f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexOrThrowEmpty() throws Exception {
963f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
973f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
983f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getColumnIndexOrThrow("name"), equalTo(1));
993f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
1003f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1013f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test(expected = IllegalArgumentException.class)
1023f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetColumnIndexOrThrowNotFoundEmpty() throws Exception {
1033f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
1043f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1053f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.getColumnIndexOrThrow("Fred");
1063f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
1073f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1083f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
1093f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testMoveToFirst() throws Exception {
1103f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToFirst(), equalTo(true));
1113f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getInt(0), equalTo(1234));
1123f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getString(1), equalTo("Chuck"));
1133f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
1143f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1153f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
1163f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testMoveToFirstEmpty() throws Exception {
1173f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
1183f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1193f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToFirst(), equalTo(false));
1203f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
1213f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1223f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
1233f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testMoveToNext() throws Exception {
1243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
1253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1263f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToNext(), equalTo(true));
1273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getInt(0), equalTo(1235));
1283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getString(1), equalTo("Julie"));
1293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
1303f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1313f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
1323f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testMoveToNextPastEnd() throws Exception {
1333f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
1343f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1353f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToNext();
1363f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToNext();
1377bf3f1f842b448cd4a422fa0d7e4469d50deb279Michael Portuesi        cursor.moveToNext();
1383f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1393f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToNext(), equalTo(false));
1403f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
141b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken
142b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken    @Test
143b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken    public void testMoveBackwards() throws Exception {
144b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken    	assertThat(cursor.getPosition(), equalTo(-1));
145b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken
146b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToFirst();
147b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(0));
148b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToNext();
149b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(1));
150b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToNext();
151b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(2));
152b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken
153b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToFirst();
154b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(0));
155b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToNext();
156b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(1));
157b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToNext();
158b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(2));
159b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken
160b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        cursor.moveToPosition(1);
161b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        assertThat(cursor.getPosition(), equalTo(1));
162b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken    }
1633f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1643f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
1653f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testMoveToNextEmpty() throws Exception {
1663f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupEmptyResult();
1673f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
1683f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
1693f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToNext(), equalTo(false));
1703f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
171415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
172415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    @Test
173415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    public void testMoveToPrevious() throws Exception {
174415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	cursor.moveToFirst();
175415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	cursor.moveToNext();
176415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
177415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	assertThat(cursor.moveToPrevious(), equalTo(true));
178415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi        assertThat(cursor.getInt(0), equalTo(1234));
179415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi        assertThat(cursor.getString(1), equalTo("Chuck"));
180415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    }
181415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
182415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    @Test
183415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    public void testMoveToPreviousPastStart() throws Exception {
184415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	cursor.moveToFirst();
185415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
186415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	// Possible to move cursor before the first item
187415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	assertThat(cursor.moveToPrevious(), equalTo(true));
188415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	// After that, attempts to move cursor back return false
189415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	assertThat(cursor.moveToPrevious(), equalTo(false));
190415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    }
191415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
192415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    @Test
193415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    public void testMoveToPreviousEmpty() throws Exception {
194415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi        setupEmptyResult();
195415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	cursor.moveToFirst();
196415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi
197415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    	assertThat(cursor.moveToPrevious(), equalTo(false));
198415cfefe7cc3be5f1748a98d2247779f935ea22fMichael Portuesi    }
1993f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2003f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2013f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetPosition() throws Exception {
2023f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2033f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getPosition(), equalTo(0));
2043f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2053f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToNext();
2063f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getPosition(), equalTo(1));
2073f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2083f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2093f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2103f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetBlob() throws Exception {
2113f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        String sql = "UPDATE table_name set blob_value=? where id=1234";
2123f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        byte[] byteData = sql.getBytes();
2133f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2143f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        PreparedStatement statement = connection.prepareStatement(sql);
2153f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        statement.setObject(1, byteData);
2163f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        statement.executeUpdate();
2173f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2183f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupCursor();
2193f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2203f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2213f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        byte[] retrievedByteData = cursor.getBlob(5);
2223f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(byteData.length, equalTo(retrievedByteData.length));
2233f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        for (int i = 0; i < byteData.length; i++) {
2253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            assertThat(byteData[i], equalTo(retrievedByteData[i]));
2263f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        }
2273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
230b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala    public void testGetClob() throws Exception {
231b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        String sql = "UPDATE table_name set clob_value=? where id=1234";
232b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        String s = "Don't CLOBber my data, please. Thank you.";
233b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala
234b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        PreparedStatement statement = connection.prepareStatement(sql);
235b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        statement.setObject(1, s);
236b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        statement.executeUpdate();
237b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala
238b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        setupCursor();
239b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        cursor.moveToFirst();
240b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala
241b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        String actual = cursor.getString(6);
242b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        assertThat(s, equalTo(actual));
243b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala    }
244b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala
245b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala    @Test
2463f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetString() throws Exception {
2473f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2483f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2493f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        String[] data = {"Chuck", "Julie", "Chris"};
2503f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2513f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        for (String aData : data) {
2523f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            assertThat(cursor.getString(1), equalTo(aData));
2533f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            cursor.moveToNext();
2543f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        }
2553f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2563f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2573f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2583f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetInt() throws Exception {
2593f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2603f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2613f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        int[] data = {1234, 1235, 1236};
2623f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2633f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        for (int aData : data) {
2643f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            assertThat(cursor.getInt(0), equalTo(aData));
2653f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            cursor.moveToNext();
2663f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        }
2673f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2683f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2693f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2703f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetLong() throws Exception {
2713f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2723f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2733f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getLong(2), equalTo(3463L));
2743f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2753f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2763f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2773f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetFloat() throws Exception {
2783f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2793f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2803f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getFloat(3), equalTo((float) 1.5));
2813f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2823f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2833f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2843f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testGetDouble() throws Exception {
2853f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
2863f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2873f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.getDouble(4), equalTo(3.14159));
2883f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2893f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2903f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2913f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testClose() throws Exception {
2923f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isClosed(), equalTo(false));
2933f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.close();
2943f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isClosed(), equalTo(true));
2953f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
2963f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
2973f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
2983f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testIsNullWhenNull() throws Exception {
2993f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
3003f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.moveToNext(), equalTo(true));
3013f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3023f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(cursor.getColumnIndex("id")), equalTo(false));
3033f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(cursor.getColumnIndex("name")), equalTo(false));
3043f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3053f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(cursor.getColumnIndex("long_value")), equalTo(true));
3063f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(cursor.getColumnIndex("float_value")), equalTo(true));
3073f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(cursor.getColumnIndex("double_value")), equalTo(true));
3083f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3093f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3103f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
3113f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testIsNullWhenNotNull() throws Exception {
3123f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
3133f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3143f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        for (int i = 0; i < 5; i++) {
3153f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            assertThat(cursor.isNull(i), equalTo(false));
3163f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        }
3173f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3183f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3193f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    @Test
3203f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    public void testIsNullWhenIndexOutOfBounds() throws Exception {
3213f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor.moveToFirst();
3223f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3233f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        // column index 5 is out-of-bounds
3243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        assertThat(cursor.isNull(5), equalTo(true));
3253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3263f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private void addPeople() throws Exception {
3283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        String[] inserts = {
3293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz                "INSERT INTO table_name (id, name, long_value, float_value, double_value) VALUES(1234, 'Chuck', 3463, 1.5, 3.14159);",
3303f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz                "INSERT INTO table_name (id, name) VALUES(1235, 'Julie');",
3313f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz                "INSERT INTO table_name (id, name) VALUES(1236, 'Chris');"
3323f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        };
3333f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3343f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        for (String insert : inserts) {
3353f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz            connection.createStatement().executeUpdate(insert);
3363f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        }
3373f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3383f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3393f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private void setupCursor() throws Exception {
340b970da24960c184335a2aba413e3f5bfbbed7825Chris Van Vranken        Statement statement = connection.createStatement(DatabaseConfig.getResultSetType(), ResultSet.CONCUR_READ_ONLY);
341bdb2b1d336367115dee931221ea77fe1833607daChris Van Vranken        String sql ="SELECT * FROM table_name;";
3423f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        resultSet = statement.executeQuery("SELECT * FROM table_name;");
3433f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        cursor = new SQLiteCursor(null, null, null, null);
3443c12685104bc2899a199fbb057ca5d58d171cdf1Chris Van Vranken        Robolectric.shadowOf(cursor).setResultSet(resultSet, sql);
3453f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3463f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3473f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private void setupEmptyResult() throws Exception {
3483f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        Statement statement = connection.createStatement();
3493f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        statement.executeUpdate("DELETE FROM table_name;");
3503f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3513f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz        setupCursor();
3523f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
3533f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz
3543f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    private void assertColumnNames(String[] columnNames) {
355b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        assertThat(columnNames.length, equalTo(7));
3561a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[0], equalTo("id"));
3571a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[1], equalTo("name"));
3581a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[2], equalTo("long_value"));
3591a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[3], equalTo("float_value"));
3601a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[4], equalTo("double_value"));
3611a9369183084796a080ab7920cf840961a31abd2Chris Van Vranken        assertThat(columnNames[5], equalTo("blob_value"));
362b0b6ef0508aac9638763141f2f23c79482b1ead2Lenny Turetsky & Rick Kawala        assertThat(columnNames[6], equalTo("clob_value"));
3633f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz    }
364b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
365b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi}
366