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

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

Issue 10540016: indexedDB work (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 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('../../lib/unittest/unittest.dart'); 2 #import('../../lib/unittest/unittest.dart');
3 #import('../../lib/unittest/html_config.dart'); 3 #import('../../lib/unittest/html_config.dart');
4 #import('dart:html'); 4 #import('dart:html');
5 5
6 final String DB_NAME = 'Test'; 6 final String DB_NAME = 'Test';
7 final String STORE_NAME = 'TEST'; 7 final String STORE_NAME = 'TEST';
8 final String VERSION = '1'; 8 final String VERSION = '1';
9 9
10 testReadWrite(key, value, check, 10 testReadWrite(key, value, check,
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 Expect.fail('IndexedDB failure'); 18 Expect.fail('IndexedDB failure');
19 }); 19 });
20 } 20 }
21 21
22 createObjectStore() { 22 createObjectStore() {
23 var store = db.createObjectStore(storeName); 23 var store = db.createObjectStore(storeName);
24 Expect.isNotNull(store); 24 Expect.isNotNull(store);
25 } 25 }
26 26
27 step2(e) { 27 step2(e) {
28 var transaction = db.transaction(storeName, IDBTransaction.READ_ONLY); 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 check(value, object); 32 check(value, object);
33 })); 33 }));
34 request.on.error.add(fail); 34 request.on.error.add(fail);
35 } 35 }
36 36
37 step1() { 37 step1() {
38 var transaction = db.transaction([storeName], IDBTransaction.READ_WRITE); 38 var transaction = db.transaction([storeName], 'readwrite');
39 var request = transaction.objectStore(storeName).put(value, key); 39 var request = transaction.objectStore(storeName).put(value, key);
40 request.on.success.add(expectAsync1(step2)); 40 request.on.success.add(expectAsync1(step2));
41 request.on.error.add(fail); 41 request.on.error.add(fail);
42 } 42 }
43 43
44 initDb(e) { 44 initDb(e) {
45 db = e.target.result; 45 db = e.target.result;
46 if (version != db.version) { 46 if (version != db.version) {
47 // TODO. Some browsers do this the w3 way - passing the version to the 47 // TODO. Some browsers do this the w3 way - passing the version to the
48 // open call and listening to onversionchange. Can we feature-detect the 48 // open call and listening to onversionchange. Can we feature-detect the
49 // difference and make it work? 49 // difference and make it work?
50 var request = db.setVersion(version); 50 var request = db.setVersion(version);
51 request.on.success.add( 51 request.on.success.add(
52 expectAsync1((e) { 52 expectAsync1((e) {
53 createObjectStore(); 53 createObjectStore();
54 step1(); 54 step1();
55 }) 55 })
56 ); 56 );
57 request.on.error.add(fail); 57 request.on.error.add(fail);
58 } else { 58 } else {
59 step1(); 59 step1();
60 } 60 }
61 } 61 }
62 62
63 var request = window.webkitIndexedDB.open(dbName); 63 var request = window.indexedDB.open(dbName);
64 Expect.isNotNull(request); 64 Expect.isNotNull(request);
65 request.on.success.add(expectAsync1(initDb)); 65 request.on.success.add(expectAsync1(initDb));
66 request.on.error.add(fail); 66 request.on.error.add(fail);
67 }; 67 };
68 68
69 testReadWriteTyped(key, value, check, 69 testReadWriteTyped(key, value, check,
70 [dbName = DB_NAME, 70 [dbName = DB_NAME,
71 storeName = STORE_NAME, 71 storeName = STORE_NAME,
72 version = VERSION]) => () { 72 version = VERSION]) => () {
73 IDBDatabase db; 73 IDBDatabase db;
74 74
75 fail(e) { 75 fail(e) {
76 guardAsync(() { 76 guardAsync(() {
77 Expect.fail('IndexedDB failure'); 77 Expect.fail('IndexedDB failure');
78 }); 78 });
79 } 79 }
80 80
81 createObjectStore() { 81 createObjectStore() {
82 IDBObjectStore store = db.createObjectStore(storeName); 82 IDBObjectStore store = db.createObjectStore(storeName);
83 Expect.isNotNull(store); 83 Expect.isNotNull(store);
84 } 84 }
85 85
86 step2(e) { 86 step2(e) {
87 IDBTransaction transaction = 87 IDBTransaction transaction = db.transaction(storeName, 'readonly');
88 db.transaction(storeName, IDBTransaction.READ_ONLY);
89 IDBRequest request = transaction.objectStore(storeName).getObject(key); 88 IDBRequest request = transaction.objectStore(storeName).getObject(key);
90 request.on.success.add(expectAsync1((e) { 89 request.on.success.add(expectAsync1((e) {
91 var object = e.target.result; 90 var object = e.target.result;
92 check(value, object); 91 check(value, object);
93 })); 92 }));
94 request.on.error.add(fail); 93 request.on.error.add(fail);
95 } 94 }
96 95
97 step1() { 96 step1() {
98 IDBTransaction transaction = 97 IDBTransaction transaction =
99 db.transaction([storeName], IDBTransaction.READ_WRITE); 98 db.transaction([storeName], 'readwrite');
100 IDBRequest request = transaction.objectStore(storeName).put(value, key); 99 IDBRequest request = transaction.objectStore(storeName).put(value, key);
101 request.on.success.add(expectAsync1(step2)); 100 request.on.success.add(expectAsync1(step2));
102 request.on.error.add(fail); 101 request.on.error.add(fail);
103 } 102 }
104 103
105 initDb(e) { 104 initDb(e) {
106 db = e.target.result; 105 db = e.target.result;
107 if (version != db.version) { 106 if (version != db.version) {
108 IDBRequest request = db.setVersion(version); 107 IDBRequest request = db.setVersion(version);
109 request.on.success.add( 108 request.on.success.add(
110 expectAsync1((e) { 109 expectAsync1((e) {
111 createObjectStore(); 110 createObjectStore();
112 step1(); 111 step1();
113 }) 112 })
114 ); 113 );
115 request.on.error.add(fail); 114 request.on.error.add(fail);
116 } else { 115 } else {
117 step1(); 116 step1();
118 } 117 }
119 } 118 }
120 119
121 IDBRequest request = window.webkitIndexedDB.open(dbName); 120 IDBRequest request = window.indexedDB.open(dbName);
122 Expect.isNotNull(request); 121 Expect.isNotNull(request);
123 request.on.success.add(expectAsync1(initDb)); 122 request.on.success.add(expectAsync1(initDb));
124 request.on.error.add(fail); 123 request.on.error.add(fail);
125 }; 124 };
126 125
127 tests_dynamic() { 126 tests_dynamic() {
128 test('test1', testReadWrite(123, 'Hoot!', Expect.equals)); 127 test('test1', testReadWrite(123, 'Hoot!', Expect.equals));
129 test('test2', testReadWrite(123, 12345, Expect.equals)); 128 test('test2', testReadWrite(123, 12345, Expect.equals));
130 test('test3', testReadWrite(123, [1,2,3], Expect.listEquals)); 129 test('test3', testReadWrite(123, [1,2,3], Expect.listEquals));
131 test('test4', testReadWrite(123, const [2, 3, 4], Expect.listEquals)); 130 test('test4', testReadWrite(123, const [2, 3, 4], Expect.listEquals));
132 } 131 }
133 132
134 tests_typed() { 133 tests_typed() {
135 test('test1', testReadWriteTyped(123, 'Hoot!', Expect.equals)); 134 test('test1', testReadWriteTyped(123, 'Hoot!', Expect.equals));
136 test('test2', testReadWriteTyped(123, 12345, Expect.equals)); 135 test('test2', testReadWriteTyped(123, 12345, Expect.equals));
137 test('test3', testReadWriteTyped(123, [1,2,3], Expect.listEquals)); 136 test('test3', testReadWriteTyped(123, [1,2,3], Expect.listEquals));
138 test('test4', 137 test('test4',
139 testReadWriteTyped(123, const [2, 3, 4], Expect.listEquals)); 138 testReadWriteTyped(123, const [2, 3, 4], Expect.listEquals));
140 } 139 }
141 140
142 main() { 141 main() {
143 useHtmlConfiguration(); 142 useHtmlConfiguration();
144 143
145 tests_dynamic(); 144 tests_dynamic();
146 tests_typed(); 145 tests_typed();
147 } 146 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698