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();
}
}
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();
}
}
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();
}
}
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());
}
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();
}
}
Aggregations