Search in sources :

Example 1 with DatabaseStorage

use of com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage in project mobile-center-sdk-android by Microsoft.

the class StorageHelperAndroidTest method databaseStorageScannerRemove.

@Test(expected = UnsupportedOperationException.class)
public void databaseStorageScannerRemove() throws IOException {
    Log.i(TAG, "Testing Database Storage Exceptions");
    /* Get instance to access database. */
    DatabaseStorage databaseStorage = DatabaseStorage.getDatabaseStorage("test-databaseStorageScannerRemove", "databaseStorageScannerRemove", 1, mSchema, new DatabaseStorage.DatabaseErrorListener() {

        @Override
        public void onError(String operation, RuntimeException e) {
            throw e;
        }
    });
    // noinspection TryFinallyCanBeTryWithResources (try with resources statement is API >= 19)
    try {
        databaseStorage.getScanner().iterator().remove();
    } finally {
        /* Close. */
        // noinspection ThrowFromFinallyBlock
        databaseStorage.close();
    }
}
Also used : DatabaseStorage(com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage) SmallTest(android.support.test.filters.SmallTest) Test(org.junit.Test)

Example 2 with DatabaseStorage

use of com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage in project mobile-center-sdk-android by Microsoft.

the class StorageHelperAndroidTest method putTooManyLogs.

@Test
public void putTooManyLogs() throws IOException {
    Log.i(TAG, "Testing Database Storage Capacity");
    /* Get instance to access database. */
    final int capacity = 2;
    DatabaseStorage databaseStorage = DatabaseStorage.getDatabaseStorage("test-putTooManyLogs", "putTooManyLogs", 1, mSchema, capacity, new DatabaseStorage.DatabaseErrorListener() {

        @Override
        public void onError(String operation, RuntimeException e) {
            throw e;
        }
    });
    // noinspection TryFinallyCanBeTryWithResources (try with resources statement is API >= 19)
    try {
        ContentValues value1 = generateContentValues();
        ContentValues value2 = generateContentValues();
        ContentValues value3 = generateContentValues();
        /* Put. */
        Long value1Id = databaseStorage.put(value1);
        Long value2Id = databaseStorage.put(value2);
        Long value3Id = databaseStorage.put(value3);
        assertNotNull(value1Id);
        assertNotNull(value2Id);
        assertNotNull(value3Id);
        assertEquals(capacity, databaseStorage.size());
    } finally {
        /* Close. */
        // noinspection ThrowFromFinallyBlock
        databaseStorage.close();
    }
}
Also used : ContentValues(android.content.ContentValues) DatabaseStorage(com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage) SuppressLint(android.annotation.SuppressLint) SmallTest(android.support.test.filters.SmallTest) Test(org.junit.Test)

Example 3 with DatabaseStorage

use of com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage in project mobile-center-sdk-android by Microsoft.

the class StorageHelperAndroidTest method databaseStorageScannerNext.

@Test(expected = NoSuchElementException.class)
public void databaseStorageScannerNext() throws IOException {
    Log.i(TAG, "Testing Database Storage Exceptions");
    /* Get instance to access database. */
    DatabaseStorage databaseStorage = DatabaseStorage.getDatabaseStorage("test-databaseStorageScannerNext", "databaseStorageScannerNext", 1, mSchema, new DatabaseStorage.DatabaseErrorListener() {

        @Override
        public void onError(String operation, RuntimeException e) {
            throw e;
        }
    });
    // noinspection TryFinallyCanBeTryWithResources (try with resources statement is API >= 19)
    try {
        databaseStorage.getScanner().iterator().next();
    } finally {
        /* Close. */
        // noinspection ThrowFromFinallyBlock
        databaseStorage.close();
    }
}
Also used : DatabaseStorage(com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage) SmallTest(android.support.test.filters.SmallTest) Test(org.junit.Test)

Example 4 with DatabaseStorage

use of com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage in project mobile-center-sdk-android by Microsoft.

the class StorageHelperAndroidTest method runDatabaseStorageTest.

@SuppressWarnings("SpellCheckingInspection")
private static void runDatabaseStorageTest(DatabaseStorage databaseStorage, boolean imdbTest) {
    ContentValues value1 = generateContentValues();
    ContentValues value2 = generateContentValues();
    ContentValues value3 = generateContentValues();
    /* Put. */
    Long value1Id = databaseStorage.put(value1);
    assertNotNull(value1Id);
    /* Get for in-memory database test. */
    if (imdbTest) {
        /* Try with invalid key. */
        ContentValues valueFromDatabase = databaseStorage.get("COL_STRINGX", value1.getAsString("COL_STRING"));
        assertNull(valueFromDatabase);
        /* Try with valid key. */
        valueFromDatabase = databaseStorage.get("COL_STRING", value1.getAsString("COL_STRING"));
        assertContentValuesEquals(value1, valueFromDatabase);
        valueFromDatabase = databaseStorage.get("COL_STRING", value1.getAsString("COL_STRING") + "X");
        assertNull(valueFromDatabase);
    }
    /* Put another. */
    Long value2Id = databaseStorage.put(value2);
    assertNotNull(value2Id);
    /* Generate an ID that is neither value1Id nor value2Id. */
    /* Get. */
    ContentValues value1FromDatabase = databaseStorage.get(value1Id);
    assertContentValuesEquals(value1, value1FromDatabase);
    ContentValues value2FromDatabase = databaseStorage.get(DatabaseManager.PRIMARY_KEY, value2Id);
    assertContentValuesEquals(value2, value2FromDatabase);
    // noinspection ResourceType
    ContentValues nullValueFromDatabase = databaseStorage.get(-1);
    assertNull(nullValueFromDatabase);
    /* Count with scanner. */
    DatabaseStorage.DatabaseScanner scanner = databaseStorage.getScanner();
    assertEquals(2, scanner.getCount());
    assertEquals(2, scanner.getCount());
    DatabaseStorage.DatabaseScanner scanner1 = databaseStorage.getScanner("COL_STRING", value1.getAsString("COL_STRING"));
    assertEquals(1, scanner1.getCount());
    Iterator<ContentValues> iterator = scanner1.iterator();
    assertContentValuesEquals(value1, iterator.next());
    assertFalse(iterator.hasNext());
    /* Null value matching. */
    assertEquals(0, databaseStorage.getScanner("COL_STRING", null).getCount());
    assertEquals(2, databaseStorage.getScanner("COL_STRING_NULL", null).getCount());
    /* Update. */
    assertTrue(databaseStorage.update(value1Id, value3));
    ContentValues value3FromDatabase = databaseStorage.get(value1Id);
    assertContentValuesEquals(value3, value3FromDatabase);
    /* Delete. */
    databaseStorage.delete(value1Id);
    assertNull(databaseStorage.get(value1Id));
    assertEquals(1, databaseStorage.size());
    assertEquals(1, databaseStorage.getScanner().getCount());
    /* Put logs to delete multiple IDs. */
    ContentValues value4 = generateContentValues();
    ContentValues value5 = generateContentValues();
    Long value4Id = databaseStorage.put(value4);
    Long value5Id = databaseStorage.put(value5);
    assertNotNull(value4Id);
    assertNotNull(value5Id);
    /* Delete multiple logs. */
    databaseStorage.delete(Arrays.asList(new Long[] { value4Id, value5Id }));
    assertNull(databaseStorage.get(value4Id));
    assertNull(databaseStorage.get(value5Id));
    assertEquals(1, databaseStorage.size());
    /* Put logs to delete with condition. */
    ContentValues value6 = generateContentValues();
    ContentValues value7 = generateContentValues();
    value6.put("COL_STRING", value2.getAsString("COL_STRING"));
    value7.put("COL_STRING", value2.getAsString("COL_STRING") + "A");
    Long value6Id = databaseStorage.put(value6);
    Long value7Id = databaseStorage.put(value7);
    assertNotNull(value6Id);
    assertNotNull(value7Id);
    /* Delete for in-memory database test. */
    if (imdbTest) {
        /* Try with invalid key. */
        databaseStorage.delete("COL_STRINGX", value2.getAsString("COL_STRING"));
        assertEquals(3, databaseStorage.size());
    }
    /* Delete logs with condition. */
    databaseStorage.delete("COL_STRING", value2.getAsString("COL_STRING"));
    assertEquals(1, databaseStorage.size());
    ContentValues value7FromDatabase = databaseStorage.get(value7Id);
    assertContentValuesEquals(value7, value7FromDatabase);
    /* Clear. */
    databaseStorage.clear();
    assertEquals(0, databaseStorage.size());
}
Also used : ContentValues(android.content.ContentValues) DatabaseStorage(com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage)

Example 5 with DatabaseStorage

use of com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage in project mobile-center-sdk-android by Microsoft.

the class StorageHelperAndroidTest method databaseStorageInMemoryDB.

/* This is a hack to test database failure by passing a weird table name which is actually valid.
       SQLite database allows to create a table that contains period (.) but it doesn't actually create the table and doesn't raise any exceptions.
       This test method will then be able to test in-memory database by accessing a table which is not created.
       Only tested on emulator so it might not work in the future or on any other devices. */
@Test
public void databaseStorageInMemoryDB() throws IOException {
    Log.i(TAG, "Testing Database Storage switch over to in-memory database");
    /* Get instance to access database. */
    DatabaseStorage databaseStorage = DatabaseStorage.getDatabaseStorage("test-databaseStorageInMemoryDB", "test.databaseStorageInMemoryDB", 1, mSchema, new DatabaseStorage.DatabaseErrorListener() {

        @Override
        public void onError(String operation, RuntimeException e) {
        /* Do not handle any errors. This is simulating errors so this is expected. */
        }
    });
    // noinspection TryFinallyCanBeTryWithResources (try with resources statement is API >= 19)
    try {
        runDatabaseStorageTest(databaseStorage, true);
    } finally {
        /* Close. */
        // noinspection ThrowFromFinallyBlock
        databaseStorage.close();
    }
}
Also used : DatabaseStorage(com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage) SmallTest(android.support.test.filters.SmallTest) Test(org.junit.Test)

Aggregations

DatabaseStorage (com.microsoft.appcenter.utils.storage.StorageHelper.DatabaseStorage)7 SmallTest (android.support.test.filters.SmallTest)6 Test (org.junit.Test)6 ContentValues (android.content.ContentValues)3 SuppressLint (android.annotation.SuppressLint)1