OLD | NEW |
1 #library('IndexedDB1Test'); | 1 #library('IndexedDB1Test'); |
2 #import('../../pkg/unittest/unittest.dart'); | 2 #import('../../pkg/unittest/unittest.dart'); |
3 #import('../../pkg/unittest/html_config.dart'); | 3 #import('../../pkg/unittest/html_config.dart'); |
4 #import('dart:html'); | 4 #import('dart:html'); |
5 | 5 |
6 const String DB_NAME = 'Test'; | 6 const String DB_NAME = 'Test'; |
7 const String STORE_NAME = 'TEST'; | 7 const String STORE_NAME = 'TEST'; |
8 const int VERSION = 1; | 8 const int VERSION = 1; |
9 | 9 |
10 testReadWrite(key, value, check, | 10 testReadWrite(key, value, matcher, |
11 [dbName = DB_NAME, | 11 [dbName = DB_NAME, |
12 storeName = STORE_NAME, | 12 storeName = STORE_NAME, |
13 version = VERSION]) => () { | 13 version = VERSION]) => () { |
14 var db; | 14 var db; |
15 | 15 |
16 fail(e) { | 16 fail(e) { |
17 guardAsync(() { | 17 guardAsync(() { |
18 throw const Exception('IndexedDB failure'); | 18 throw const Exception('IndexedDB failure'); |
19 }); | 19 }); |
20 } | 20 } |
21 | 21 |
22 createObjectStore(db) { | 22 createObjectStore(db) { |
23 var store = db.createObjectStore(storeName); | 23 var store = db.createObjectStore(storeName); |
24 expect(store, isNotNull); | 24 expect(store, isNotNull); |
25 } | 25 } |
26 | 26 |
27 step2(e) { | 27 step2(e) { |
28 var transaction = db.transaction(storeName, 'readonly'); | 28 var transaction = db.transaction(storeName, 'readonly'); |
29 var request = transaction.objectStore(storeName).getObject(key); | 29 var request = transaction.objectStore(storeName).getObject(key); |
30 request.on.success.add(expectAsync1((e) { | 30 request.on.success.add(expectAsync1((e) { |
31 var object = e.target.result; | 31 var object = e.target.result; |
32 db.close(); | 32 db.close(); |
33 check(value, object); | 33 expect(object, matcher); |
34 })); | 34 })); |
35 request.on.error.add(fail); | 35 request.on.error.add(fail); |
36 } | 36 } |
37 | 37 |
38 step1() { | 38 step1() { |
39 var transaction = db.transaction([storeName], 'readwrite'); | 39 var transaction = db.transaction([storeName], 'readwrite'); |
40 var request = transaction.objectStore(storeName).put(value, key); | 40 var request = transaction.objectStore(storeName).put(value, key); |
41 request.on.success.add(expectAsync1(step2)); | 41 request.on.success.add(expectAsync1(step2)); |
42 request.on.error.add(fail); | 42 request.on.error.add(fail); |
43 } | 43 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 }); | 76 }); |
77 } | 77 } |
78 } | 78 } |
79 | 79 |
80 // Delete any existing DB. | 80 // Delete any existing DB. |
81 var deleteRequest = window.indexedDB.deleteDatabase(dbName); | 81 var deleteRequest = window.indexedDB.deleteDatabase(dbName); |
82 deleteRequest.on.success.add(expectAsync1(openDb)); | 82 deleteRequest.on.success.add(expectAsync1(openDb)); |
83 deleteRequest.on.error.add(fail); | 83 deleteRequest.on.error.add(fail); |
84 }; | 84 }; |
85 | 85 |
86 testReadWriteTyped(key, value, check, | 86 testReadWriteTyped(key, value, matcher, |
87 [dbName = DB_NAME, | 87 [dbName = DB_NAME, |
88 storeName = STORE_NAME, | 88 storeName = STORE_NAME, |
89 version = VERSION]) => () { | 89 version = VERSION]) => () { |
90 IDBDatabase db; | 90 IDBDatabase db; |
91 | 91 |
92 fail(e) { | 92 fail(e) { |
93 guardAsync(() { | 93 guardAsync(() { |
94 throw const Exception('IndexedDB failure'); | 94 throw const Exception('IndexedDB failure'); |
95 }); | 95 }); |
96 } | 96 } |
97 | 97 |
98 createObjectStore(db) { | 98 createObjectStore(db) { |
99 IDBObjectStore store = db.createObjectStore(storeName); | 99 IDBObjectStore store = db.createObjectStore(storeName); |
100 expect(store, isNotNull); | 100 expect(store, isNotNull); |
101 } | 101 } |
102 | 102 |
103 step2(e) { | 103 step2(e) { |
104 IDBTransaction transaction = db.transaction(storeName, 'readonly'); | 104 IDBTransaction transaction = db.transaction(storeName, 'readonly'); |
105 IDBRequest request = transaction.objectStore(storeName).getObject(key); | 105 IDBRequest request = transaction.objectStore(storeName).getObject(key); |
106 request.on.success.add(expectAsync1((e) { | 106 request.on.success.add(expectAsync1((e) { |
107 var object = e.target.result; | 107 var object = e.target.result; |
108 db.close(); | 108 db.close(); |
109 check(value, object); | 109 expect(object, matcher); |
110 })); | 110 })); |
111 request.on.error.add(fail); | 111 request.on.error.add(fail); |
112 } | 112 } |
113 | 113 |
114 step1() { | 114 step1() { |
115 IDBTransaction transaction = db.transaction([storeName], 'readwrite'); | 115 IDBTransaction transaction = db.transaction([storeName], 'readwrite'); |
116 IDBRequest request = transaction.objectStore(storeName).put(value, key); | 116 IDBRequest request = transaction.objectStore(storeName).put(value, key); |
117 request.on.success.add(expectAsync1(step2)); | 117 request.on.success.add(expectAsync1(step2)); |
118 request.on.error.add(fail); | 118 request.on.error.add(fail); |
119 } | 119 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 } | 153 } |
154 } | 154 } |
155 | 155 |
156 // Delete any existing DB. | 156 // Delete any existing DB. |
157 IDBRequest deleteRequest = window.indexedDB.deleteDatabase(dbName); | 157 IDBRequest deleteRequest = window.indexedDB.deleteDatabase(dbName); |
158 deleteRequest.on.success.add(expectAsync1(openDb)); | 158 deleteRequest.on.success.add(expectAsync1(openDb)); |
159 deleteRequest.on.error.add(fail); | 159 deleteRequest.on.error.add(fail); |
160 }; | 160 }; |
161 | 161 |
162 tests_dynamic() { | 162 tests_dynamic() { |
163 test('test1', testReadWrite(123, 'Hoot!', Expect.equals)); | 163 test('test1', testReadWrite(123, 'Hoot!', equals('Hoot!'))); |
164 test('test2', testReadWrite(123, 12345, Expect.equals)); | 164 test('test2', testReadWrite(123, 12345, equals(12345))); |
165 test('test3', testReadWrite(123, [1,2,3], Expect.listEquals)); | 165 test('test3', testReadWrite(123, [1, 2, 3], equals([1, 2, 3]))); |
166 test('test4', testReadWrite(123, const [2, 3, 4], Expect.listEquals)); | 166 test('test4', testReadWrite(123, [2, 3, 4], equals([2, 3, 4]))); |
167 } | 167 } |
168 | 168 |
169 tests_typed() { | 169 tests_typed() { |
170 test('test1', testReadWriteTyped(123, 'Hoot!', Expect.equals)); | 170 test('test1', testReadWriteTyped(123, 'Hoot!', equals('Hoot!'))); |
171 test('test2', testReadWriteTyped(123, 12345, Expect.equals)); | 171 test('test2', testReadWriteTyped(123, 12345, equals(12345))); |
172 test('test3', testReadWriteTyped(123, [1,2,3], Expect.listEquals)); | 172 test('test3', testReadWriteTyped(123, [1, 2, 3], equals([1, 2, 3]))); |
173 test('test4', | 173 test('test4', testReadWriteTyped(123, [2, 3, 4], equals([2, 3, 4]))); |
174 testReadWriteTyped(123, const [2, 3, 4], Expect.listEquals)); | |
175 } | 174 } |
176 | 175 |
177 main() { | 176 main() { |
178 useHtmlConfiguration(); | 177 useHtmlConfiguration(); |
179 | 178 |
180 tests_dynamic(); | 179 tests_dynamic(); |
181 tests_typed(); | 180 tests_typed(); |
182 } | 181 } |
OLD | NEW |