diff options
Diffstat (limited to 'v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java')
-rw-r--r-- | v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java b/v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java new file mode 100644 index 000000000..563dc477a --- /dev/null +++ b/v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java @@ -0,0 +1,132 @@ +package com.xtremelabs.robolectric.shadows; + + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.database.sqlite.SQLiteOpenHelper; +import com.xtremelabs.robolectric.WithTestDefaultsRunner; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.junit.Assert.assertThat; + +@RunWith(WithTestDefaultsRunner.class) +public class SQLiteOpenHelperTest { + + private TestOpenHelper helper; + + @Before + public void setUp() throws Exception { + helper = new TestOpenHelper(null, "path", null, 1); + } + + @Test + public void testInitialGetReadableDatabase() throws Exception { + SQLiteDatabase database = helper.getReadableDatabase(); + assertInitialDB(database); + } + + @Test + public void testSubsequentGetReadableDatabase() throws Exception { + SQLiteDatabase database = helper.getReadableDatabase(); + helper.reset(); + database = helper.getReadableDatabase(); + + assertSubsequentDB(database); + } + + @Test + public void testSameDBInstanceSubsequentGetReadableDatabase() throws Exception { + SQLiteDatabase db1 = helper.getReadableDatabase(); + SQLiteDatabase db2 = helper.getReadableDatabase(); + + assertThat(db1, sameInstance(db2)); + } + + @Test + public void testInitialGetWritableDatabase() throws Exception { + SQLiteDatabase database = helper.getWritableDatabase(); + assertInitialDB(database); + } + + @Test + public void testSubsequentGetWritableDatabase() throws Exception { + helper.getWritableDatabase(); + helper.reset(); + + assertSubsequentDB(helper.getWritableDatabase()); + } + + @Test + public void testSameDBInstanceSubsequentGetWritableDatabase() throws Exception { + SQLiteDatabase db1 = helper.getWritableDatabase(); + SQLiteDatabase db2 = helper.getWritableDatabase(); + + assertThat(db1, sameInstance(db2)); + } + + @Test + public void testClose() throws Exception { + SQLiteDatabase database = helper.getWritableDatabase(); + + assertThat(database.isOpen(), equalTo(true)); + helper.close(); + assertThat(database.isOpen(), equalTo(false)); + } + + private void assertInitialDB(SQLiteDatabase database) { + assertDatabaseOpened(database); + assertThat(helper.onCreateCalled, equalTo(true)); + } + + private void assertSubsequentDB(SQLiteDatabase database) { + assertDatabaseOpened(database); + assertThat(helper.onCreateCalled, equalTo(false)); + } + + private void assertDatabaseOpened(SQLiteDatabase database) { + assertThat(database, notNullValue()); + assertThat(database.isOpen(), equalTo(true)); + assertThat(helper.onOpenCalled, equalTo(true)); + assertThat(helper.onUpgradeCalled, equalTo(false)); + } + + private class TestOpenHelper extends SQLiteOpenHelper { + + public boolean onCreateCalled; + public boolean onUpgradeCalled; + public boolean onOpenCalled; + + public TestOpenHelper(Context context, String name, + CursorFactory factory, int version) { + super(context, name, factory, version); + reset(); + } + + @Override + public void onCreate(SQLiteDatabase database) { + onCreateCalled = true; + } + + @Override + public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { + onUpgradeCalled = true; + } + + @Override + public void onOpen(SQLiteDatabase database) { + onOpenCalled = true; + } + + public void reset() { + onCreateCalled = false; + onUpgradeCalled = false; + onOpenCalled = false; + } + } +} |