mirror of
https://gitlab.com/veilid/veilid.git
synced 2025-08-11 16:11:05 -04:00
flutter unit/integration tests
This commit is contained in:
parent
d586748333
commit
6a8c0830d2
18 changed files with 1357 additions and 520 deletions
133
veilid-flutter/example/integration_test/test_table_db.dart
Normal file
133
veilid-flutter/example/integration_test/test_table_db.dart
Normal file
|
@ -0,0 +1,133 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:veilid/veilid.dart';
|
||||
|
||||
const testDb = "__dart_test_db";
|
||||
const testNonexistentDb = "__dart_test_nonexistent_db";
|
||||
|
||||
Future<void> testDeleteTableDbNonExistent() async {
|
||||
expect(await Veilid.instance.deleteTableDB(testNonexistentDb), isFalse);
|
||||
}
|
||||
|
||||
Future<void> testOpenDeleteTableDb() async {
|
||||
// delete test db if it exists
|
||||
await Veilid.instance.deleteTableDB(testDb);
|
||||
|
||||
final tdb = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
expect(() async => await Veilid.instance.deleteTableDB(testDb),
|
||||
throwsA(isA<VeilidAPIException>()));
|
||||
} finally {
|
||||
tdb.close();
|
||||
}
|
||||
expect(await Veilid.instance.deleteTableDB(testDb), isTrue);
|
||||
}
|
||||
|
||||
Future<void> testOpenTwiceTableDb() async {
|
||||
// delete test db if it exists
|
||||
await Veilid.instance.deleteTableDB(testDb);
|
||||
|
||||
final tdb = await Veilid.instance.openTableDB(testDb, 1);
|
||||
final tdb2 = await Veilid.instance.openTableDB(testDb, 1);
|
||||
|
||||
// delete should fail because open
|
||||
await expectLater(() async => await Veilid.instance.deleteTableDB(testDb),
|
||||
throwsA(isA<VeilidAPIException>()));
|
||||
tdb.close();
|
||||
// delete should fail because open
|
||||
await expectLater(() async => await Veilid.instance.deleteTableDB(testDb),
|
||||
throwsA(isA<VeilidAPIException>()));
|
||||
tdb2.close();
|
||||
|
||||
// delete should now succeed
|
||||
expect(await Veilid.instance.deleteTableDB(testDb), isTrue);
|
||||
}
|
||||
|
||||
Future<void> testOpenTwiceTableDbStoreLoad() async {
|
||||
// delete test db if it exists
|
||||
await Veilid.instance.deleteTableDB(testDb);
|
||||
|
||||
final tdb = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
final tdb2 = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
// store into first db copy
|
||||
await tdb.store(0, utf8.encode("asdf"), utf8.encode("1234"));
|
||||
// load from second db copy
|
||||
expect(
|
||||
await tdb2.load(0, utf8.encode("asdf")), equals(utf8.encode("1234")));
|
||||
} finally {
|
||||
tdb2.close();
|
||||
}
|
||||
} finally {
|
||||
tdb.close();
|
||||
}
|
||||
|
||||
// delete should now succeed
|
||||
expect(await Veilid.instance.deleteTableDB(testDb), isTrue);
|
||||
}
|
||||
|
||||
Future<void> testOpenTwiceTableDbStoreDeleteLoad() async {
|
||||
// delete test db if it exists
|
||||
await Veilid.instance.deleteTableDB(testDb);
|
||||
|
||||
final tdb = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
final tdb2 = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
// store into first db copy
|
||||
await tdb.store(0, utf8.encode("asdf"), utf8.encode("1234"));
|
||||
// delete from second db copy and clean up
|
||||
await tdb2.delete(0, utf8.encode("asdf"));
|
||||
} finally {
|
||||
tdb2.close();
|
||||
}
|
||||
// load from first db copy
|
||||
expect(await tdb.load(0, utf8.encode("asdf")), isNull);
|
||||
} finally {
|
||||
tdb.close();
|
||||
}
|
||||
|
||||
// delete should now succeed
|
||||
expect(await Veilid.instance.deleteTableDB(testDb), isTrue);
|
||||
}
|
||||
|
||||
Future<void> testResizeTableDb() async {
|
||||
// delete test db if it exists
|
||||
await Veilid.instance.deleteTableDB(testDb);
|
||||
|
||||
final tdb = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
// reopen the db with more columns should fail if it is already open
|
||||
await expectLater(() async => await Veilid.instance.openTableDB(testDb, 2),
|
||||
throwsA(isA<VeilidAPIException>()));
|
||||
} finally {
|
||||
tdb.close();
|
||||
}
|
||||
|
||||
final tdb2 = await Veilid.instance.openTableDB(testDb, 2);
|
||||
try {
|
||||
// write something to second column
|
||||
await tdb2.store(1, utf8.encode("qwer"), utf8.encode("5678"));
|
||||
|
||||
// reopen the db with fewer columns
|
||||
final tdb3 = await Veilid.instance.openTableDB(testDb, 1);
|
||||
try {
|
||||
// Should fail access to second column
|
||||
await expectLater(() async => await tdb3.load(1, utf8.encode("qwer")),
|
||||
throwsA(isA<VeilidAPIException>()));
|
||||
|
||||
// Should succeed with access to second column
|
||||
expect(
|
||||
await tdb2.load(1, utf8.encode("qwer")), equals(utf8.encode("5678")));
|
||||
} finally {
|
||||
tdb3.close();
|
||||
}
|
||||
} finally {
|
||||
tdb2.close();
|
||||
}
|
||||
|
||||
// delete should now succeed
|
||||
expect(await Veilid.instance.deleteTableDB(testDb), isTrue);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue