aboutsummaryrefslogtreecommitdiff
path: root/v1/src/test/java/com/xtremelabs/robolectric/shadows/SQLiteOpenHelperTest.java
diff options
context:
space:
mode:
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.java132
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;
+ }
+ }
+}