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

Side by Side Diff: tests/html/indexeddb_1_test.dart

Issue 12040059: Converting tests over to using event streams. (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library IndexedDB1Test; 1 library IndexedDB1Test;
2 import '../../pkg/unittest/lib/unittest.dart'; 2 import '../../pkg/unittest/lib/unittest.dart';
3 import '../../pkg/unittest/lib/html_individual_config.dart'; 3 import '../../pkg/unittest/lib/html_individual_config.dart';
4 import 'dart:html' as html; 4 import 'dart:html' as html;
5 import 'dart:indexed_db' as idb; 5 import 'dart:indexed_db' as idb;
6 6
7 const String DB_NAME = 'Test'; 7 const String DB_NAME = 'Test';
8 const String STORE_NAME = 'TEST'; 8 const String STORE_NAME = 'TEST';
9 const int VERSION = 1; 9 const int VERSION = 1;
10 10
(...skipping 10 matching lines...) Expand all
21 } 21 }
22 22
23 createObjectStore(db) { 23 createObjectStore(db) {
24 var store = db.createObjectStore(storeName); 24 var store = db.createObjectStore(storeName);
25 expect(store, isNotNull); 25 expect(store, isNotNull);
26 } 26 }
27 27
28 step2(e) { 28 step2(e) {
29 var transaction = db.transaction(storeName, 'readonly'); 29 var transaction = db.transaction(storeName, 'readonly');
30 var request = transaction.objectStore(storeName).getObject(key); 30 var request = transaction.objectStore(storeName).getObject(key);
31 request.on.success.add(expectAsync1((e) { 31 request.onSuccess.listen(expectAsync1((e) {
32 var object = e.target.result; 32 var object = e.target.result;
33 db.close(); 33 db.close();
34 expect(object, matcher); 34 expect(object, matcher);
35 })); 35 }));
36 request.on.error.add(fail); 36 request.onError.listen(fail);
37 } 37 }
38 38
39 step1() { 39 step1() {
40 var transaction = db.transaction([storeName], 'readwrite'); 40 var transaction = db.transaction([storeName], 'readwrite');
41 var request = transaction.objectStore(storeName).put(value, key); 41 var request = transaction.objectStore(storeName).put(value, key);
42 request.on.success.add(expectAsync1(step2)); 42 request.onSuccess.listen(expectAsync1(step2));
43 request.on.error.add(fail); 43 request.onError.listen(fail);
44 } 44 }
45 45
46 initDb(e) { 46 initDb(e) {
47 db = e.target.result; 47 db = e.target.result;
48 if (version != db.version) { 48 if (version != db.version) {
49 // Legacy 'setVersion' upgrade protocol. Chrome 23 and earlier. 49 // Legacy 'setVersion' upgrade protocol. Chrome 23 and earlier.
50 var request = db.setVersion('$version'); 50 var request = db.setVersion('$version');
51 request.on.success.add( 51 request.onSuccess.listen(
52 expectAsync1((e) { 52 expectAsync1((e) {
53 createObjectStore(db); 53 createObjectStore(db);
54 var transaction = e.target.result; 54 var transaction = e.target.result;
55 transaction.on.complete.add(expectAsync1((e) => step1())); 55 transaction.onComplete.listen(expectAsync1((e) => step1()));
56 transaction.on.error.add(fail); 56 transaction.onError.listen(fail);
57 }) 57 })
58 ); 58 );
59 request.on.error.add(fail); 59 request.onError.listen(fail);
60 } else { 60 } else {
61 step1(); 61 step1();
62 } 62 }
63 } 63 }
64 64
65 openDb(e) { 65 openDb(e) {
66 var request = html.window.indexedDB.open(dbName, version); 66 var request = html.window.indexedDB.open(dbName, version);
67 expect(request, isNotNull); 67 expect(request, isNotNull);
68 request.on.success.add(expectAsync1(initDb)); 68 request.onSuccess.listen(expectAsync1(initDb));
69 request.on.error.add(fail); 69 request.onError.listen(fail);
70 if (request is idb.OpenDBRequest) { 70 if (request is idb.OpenDBRequest) {
71 // New upgrade protocol. Old API has no 'upgradeNeeded' and uses 71 // New upgrade protocol. Old API has no 'upgradeNeeded' and uses
72 // setVersion instead. This path take by FireFox 15, Chrome 24. 72 // setVersion instead. This path take by FireFox 15, Chrome 24.
73 request.on.upgradeNeeded.add((e) { 73 request.onUpgradeNeeded.listen((e) {
74 guardAsync(() { 74 guardAsync(() {
75 createObjectStore(e.target.result); 75 createObjectStore(e.target.result);
76 }); 76 });
77 }); 77 });
78 } 78 }
79 } 79 }
80 80
81 // Delete any existing DB. 81 // Delete any existing DB.
82 var deleteRequest = html.window.indexedDB.deleteDatabase(dbName); 82 var deleteRequest = html.window.indexedDB.deleteDatabase(dbName);
83 deleteRequest.on.success.add(expectAsync1(openDb)); 83 deleteRequest.onSuccess.listen(expectAsync1(openDb));
84 deleteRequest.on.error.add(fail); 84 deleteRequest.onError.listen(fail);
85 }; 85 };
86 86
87 testReadWriteTyped(key, value, matcher, 87 testReadWriteTyped(key, value, matcher,
88 [dbName = DB_NAME, 88 [dbName = DB_NAME,
89 storeName = STORE_NAME, 89 storeName = STORE_NAME,
90 version = VERSION]) => () { 90 version = VERSION]) => () {
91 idb.Database db; 91 idb.Database db;
92 92
93 fail(e) { 93 fail(e) {
94 guardAsync(() { 94 guardAsync(() {
95 throw new Exception('IndexedDB failure'); 95 throw new Exception('IndexedDB failure');
96 }); 96 });
97 } 97 }
98 98
99 createObjectStore(db) { 99 createObjectStore(db) {
100 idb.ObjectStore store = db.createObjectStore(storeName); 100 idb.ObjectStore store = db.createObjectStore(storeName);
101 expect(store, isNotNull); 101 expect(store, isNotNull);
102 } 102 }
103 103
104 step2(e) { 104 step2(e) {
105 idb.Transaction transaction = db.transaction(storeName, 'readonly'); 105 idb.Transaction transaction = db.transaction(storeName, 'readonly');
106 idb.Request request = transaction.objectStore(storeName).getObject(key); 106 idb.Request request = transaction.objectStore(storeName).getObject(key);
107 request.on.success.add(expectAsync1((e) { 107 request.onSuccess.listen(expectAsync1((e) {
108 var object = e.target.result; 108 var object = e.target.result;
109 db.close(); 109 db.close();
110 expect(object, matcher); 110 expect(object, matcher);
111 })); 111 }));
112 request.on.error.add(fail); 112 request.onError.listen(fail);
113 } 113 }
114 114
115 step1() { 115 step1() {
116 idb.Transaction transaction = db.transaction([storeName], 'readwrite'); 116 idb.Transaction transaction = db.transaction([storeName], 'readwrite');
117 idb.Request request = transaction.objectStore(storeName).put(value, key); 117 idb.Request request = transaction.objectStore(storeName).put(value, key);
118 request.on.success.add(expectAsync1(step2)); 118 request.onSuccess.listen(expectAsync1(step2));
119 request.on.error.add(fail); 119 request.onError.listen(fail);
120 } 120 }
121 121
122 initDb(e) { 122 initDb(e) {
123 db = e.target.result; 123 db = e.target.result;
124 if (version != db.version) { 124 if (version != db.version) {
125 // Legacy 'setVersion' upgrade protocol. 125 // Legacy 'setVersion' upgrade protocol.
126 idb.Request request = db.setVersion('$version'); 126 idb.Request request = db.setVersion('$version');
127 request.on.success.add( 127 request.onSuccess.listen(
128 expectAsync1((e) { 128 expectAsync1((e) {
129 createObjectStore(db); 129 createObjectStore(db);
130 idb.Transaction transaction = e.target.result; 130 idb.Transaction transaction = e.target.result;
131 transaction.on.complete.add(expectAsync1((e) => step1())); 131 transaction.onComplete.listen(expectAsync1((e) => step1()));
132 transaction.on.error.add(fail); 132 transaction.onError.listen(fail);
133 }) 133 })
134 ); 134 );
135 request.on.error.add(fail); 135 request.onError.listen(fail);
136 } else { 136 } else {
137 step1(); 137 step1();
138 } 138 }
139 } 139 }
140 140
141 openDb(e) { 141 openDb(e) {
142 idb.Request request = html.window.indexedDB.open(dbName, version); 142 idb.Request request = html.window.indexedDB.open(dbName, version);
143 expect(request, isNotNull); 143 expect(request, isNotNull);
144 request.on.success.add(expectAsync1(initDb)); 144 request.onSuccess.listen(expectAsync1(initDb));
145 request.on.error.add(fail); 145 request.onError.listen(fail);
146 if (request is idb.OpenDBRequest) { 146 if (request is idb.OpenDBRequest) {
147 // New upgrade protocol. Old API has no 'upgradeNeeded' and uses 147 // New upgrade protocol. Old API has no 'upgradeNeeded' and uses
148 // setVersion instead. 148 // setVersion instead.
149 request.on.upgradeNeeded.add((e) { 149 request.onUpgradeNeeded.listen((e) {
150 guardAsync(() { 150 guardAsync(() {
151 createObjectStore(e.target.result); 151 createObjectStore(e.target.result);
152 }); 152 });
153 }); 153 });
154 } 154 }
155 } 155 }
156 156
157 // Delete any existing DB. 157 // Delete any existing DB.
158 idb.Request deleteRequest = html.window.indexedDB.deleteDatabase(dbName); 158 idb.Request deleteRequest = html.window.indexedDB.deleteDatabase(dbName);
159 deleteRequest.on.success.add(expectAsync1(openDb)); 159 deleteRequest.onSuccess.listen(expectAsync1(openDb));
160 deleteRequest.on.error.add(fail); 160 deleteRequest.onError.listen(fail);
161 }; 161 };
162 162
163 tests_dynamic() { 163 tests_dynamic() {
164 test('test1', testReadWrite(123, 'Hoot!', equals('Hoot!'))); 164 test('test1', testReadWrite(123, 'Hoot!', equals('Hoot!')));
165 test('test2', testReadWrite(123, 12345, equals(12345))); 165 test('test2', testReadWrite(123, 12345, equals(12345)));
166 test('test3', testReadWrite(123, [1, 2, 3], equals([1, 2, 3]))); 166 test('test3', testReadWrite(123, [1, 2, 3], equals([1, 2, 3])));
167 test('test4', testReadWrite(123, [2, 3, 4], equals([2, 3, 4]))); 167 test('test4', testReadWrite(123, [2, 3, 4], equals([2, 3, 4])));
168 test('test4', testReadWrite(123, false, equals(false))); 168 test('test4', testReadWrite(123, false, equals(false)));
169 } 169 }
170 170
(...skipping 24 matching lines...) Expand all
195 var db = html.window.indexedDB; 195 var db = html.window.indexedDB;
196 }, expectation); 196 }, expectation);
197 }); 197 });
198 198
199 // Don't bother with these tests if it's unsupported. 199 // Don't bother with these tests if it's unsupported.
200 if (idb.IdbFactory.supported) { 200 if (idb.IdbFactory.supported) {
201 tests_dynamic(); 201 tests_dynamic();
202 tests_typed(); 202 tests_typed();
203 } 203 }
204 } 204 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698