Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2847)

Unified Diff: tests/html/indexeddb_2_test.dart

Issue 12159005: Dartifying some IndexedDB APIs. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/html/indexeddb_2_test.dart
diff --git a/tests/html/indexeddb_2_test.dart b/tests/html/indexeddb_2_test.dart
index 66fef6c89f7c5fc9ccafef47eb36c299877da655..717a1f3037ddcecfe7976f6962236bc19dd3b271 100644
--- a/tests/html/indexeddb_2_test.dart
+++ b/tests/html/indexeddb_2_test.dart
@@ -1,6 +1,7 @@
library IndexedDB1Test;
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
+import 'dart:async';
import 'dart:html' as html;
import 'dart:indexed_db' as idb;
import 'dart:collection';
@@ -13,80 +14,38 @@ const String STORE_NAME = 'TEST';
const int VERSION = 1;
testReadWrite(key, value, check,
- [dbName = DB_NAME,
- storeName = STORE_NAME,
- version = VERSION]) => () {
- var db;
-
- fail(e) {
- guardAsync(() {
- throw new Exception('IndexedDB failure');
- });
- }
+ [dbName = DB_NAME, storeName = STORE_NAME, version = VERSION]) {
- createObjectStore(db) {
- var store = db.createObjectStore(storeName);
+ createObjectStore(e) {
+ var store = e.target.result.createObjectStore(storeName);
expect(store, isNotNull);
}
- step2(e) {
- var transaction = db.transaction(storeName, 'readonly');
- var request = transaction.objectStore(storeName).getObject(key);
- request.onSuccess.listen(expectAsync1((e) {
- var object = e.target.result;
+ var db;
+ return chainSteps([
+ () {
+ // Delete any existing DBs.
+ return html.window.indexedDB.deleteDatabase(dbName);
+ },
+ (_) {
+ return html.window.indexedDB.open(dbName, version: version,
+ onUpgradeNeeded: createObjectStore);
+ },
+ (result) {
+ db = result;
+ var transaction = db.transaction([storeName], 'readwrite');
+ return transaction.objectStore(storeName).put(value, key);
+ },
+ (key) {
+ var transaction = db.transaction(storeName, 'readonly');
+ return transaction.objectStore(storeName).getObject(key);
+ },
+ (object) {
db.close();
check(value, object);
- }));
- request.onError.listen(fail);
- }
-
- step1() {
- var transaction = db.transaction([storeName], 'readwrite');
- var request = transaction.objectStore(storeName).put(value, key);
- request.onSuccess.listen(expectAsync1(step2));
- request.onError.listen(fail);
- }
-
- initDb(e) {
- db = e.target.result;
- if (version != db.version) {
- // Legacy 'setVersion' upgrade protocol.
- var request = db.setVersion('$version');
- request.onSuccess.listen(
- expectAsync1((e) {
- createObjectStore(db);
- var transaction = e.target.result;
- transaction.onComplete.listen(expectAsync1((e) => step1()));
- transaction.onError.listen(fail);
- })
- );
- request.onError.listen(fail);
- } else {
- step1();
- }
- }
-
- openDb(e) {
- var request = html.window.indexedDB.open(dbName, version);
- expect(request, isNotNull);
- request.onSuccess.listen(expectAsync1(initDb));
- request.onError.listen(fail);
- if (request is idb.OpenDBRequest) {
- // New upgrade protocol. Old API has no 'upgradeNeeded' and uses
- // setVersion instead.
- request.onUpgradeNeeded.listen((e) {
- guardAsync(() {
- createObjectStore(e.target.result);
- });
- });
}
- }
-
- // Delete any existing DB.
- var deleteRequest = html.window.indexedDB.deleteDatabase(dbName);
- deleteRequest.onSuccess.listen(expectAsync1(openDb));
- deleteRequest.onError.listen(fail);
-};
+ ]);
+}
main() {
@@ -106,7 +65,8 @@ main() {
var cyclic_list = [1, 2, 3];
cyclic_list[1] = cyclic_list;
- go(name, data) => test(name, testReadWrite(123, data, verifyGraph));
+ go(name, data) => futureTest(name,
+ () => testReadWrite(123, data, verifyGraph));
test('test_verifyGraph', () {
// Nice to know verifyGraph is working before we rely on it.

Powered by Google App Engine
This is Rietveld 408576698