| OLD | NEW |
| 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 callbackDone(); | 17 guardAsync(() { |
| 18 Expect.fail('IndexedDB failure'); | 18 Expect.fail('IndexedDB failure'); |
| 19 }); |
| 19 } | 20 } |
| 20 | 21 |
| 21 createObjectStore() { | 22 createObjectStore() { |
| 22 var store = db.createObjectStore(storeName); | 23 var store = db.createObjectStore(storeName); |
| 23 Expect.isNotNull(store); | 24 Expect.isNotNull(store); |
| 24 } | 25 } |
| 25 | 26 |
| 26 step2() { | 27 step2(e) { |
| 27 var transaction = db.transaction(storeName, IDBTransaction.READ_ONLY); | 28 var transaction = db.transaction(storeName, IDBTransaction.READ_ONLY); |
| 28 var request = transaction.objectStore(storeName).getObject(key); | 29 var request = transaction.objectStore(storeName).getObject(key); |
| 29 request.on.success.add((e) { | 30 request.on.success.add(expectAsync1((e) { |
| 30 var object = e.target.result; | 31 var object = e.target.result; |
| 31 check(value, object); | 32 check(value, object); |
| 32 callbackDone(); | 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], IDBTransaction.READ_WRITE); |
| 39 var request = transaction.objectStore(storeName).put(value, key); | 39 var request = transaction.objectStore(storeName).put(value, key); |
| 40 request.on.success.add((e) { 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((e) { createObjectStore(); step1(); }); | 51 request.on.success.add( |
| 52 expectAsync1((e) { |
| 53 createObjectStore(); |
| 54 step1(); |
| 55 }) |
| 56 ); |
| 52 request.on.error.add(fail); | 57 request.on.error.add(fail); |
| 53 } else { | 58 } else { |
| 54 step1(); | 59 step1(); |
| 55 } | 60 } |
| 56 } | 61 } |
| 57 | 62 |
| 58 var request = window.webkitIndexedDB.open(dbName); | 63 var request = window.webkitIndexedDB.open(dbName); |
| 59 Expect.isNotNull(request); | 64 Expect.isNotNull(request); |
| 60 request.on.success.add(initDb); | 65 request.on.success.add(expectAsync1(initDb)); |
| 61 request.on.error.add(fail); | 66 request.on.error.add(fail); |
| 62 }; | 67 }; |
| 63 | 68 |
| 64 testReadWriteTyped(key, value, check, | 69 testReadWriteTyped(key, value, check, |
| 65 [dbName = DB_NAME, | 70 [dbName = DB_NAME, |
| 66 storeName = STORE_NAME, | 71 storeName = STORE_NAME, |
| 67 version = VERSION]) => () { | 72 version = VERSION]) => () { |
| 68 IDBDatabase db; | 73 IDBDatabase db; |
| 69 | 74 |
| 70 fail(e) { | 75 fail(e) { |
| 71 callbackDone(); | 76 guardAsync(() { |
| 72 Expect.fail('IndexedDB failure'); | 77 Expect.fail('IndexedDB failure'); |
| 78 }); |
| 73 } | 79 } |
| 74 | 80 |
| 75 createObjectStore() { | 81 createObjectStore() { |
| 76 IDBObjectStore store = db.createObjectStore(storeName); | 82 IDBObjectStore store = db.createObjectStore(storeName); |
| 77 Expect.isNotNull(store); | 83 Expect.isNotNull(store); |
| 78 } | 84 } |
| 79 | 85 |
| 80 step2() { | 86 step2(e) { |
| 81 IDBTransaction transaction = | 87 IDBTransaction transaction = |
| 82 db.transaction(storeName, IDBTransaction.READ_ONLY); | 88 db.transaction(storeName, IDBTransaction.READ_ONLY); |
| 83 IDBRequest request = transaction.objectStore(storeName).getObject(key); | 89 IDBRequest request = transaction.objectStore(storeName).getObject(key); |
| 84 request.on.success.add((e) { | 90 request.on.success.add(expectAsync1((e) { |
| 85 var object = e.target.result; | 91 var object = e.target.result; |
| 86 check(value, object); | 92 check(value, object); |
| 87 callbackDone(); | 93 })); |
| 88 }); | |
| 89 request.on.error.add(fail); | 94 request.on.error.add(fail); |
| 90 } | 95 } |
| 91 | 96 |
| 92 step1() { | 97 step1() { |
| 93 IDBTransaction transaction = | 98 IDBTransaction transaction = |
| 94 db.transaction([storeName], IDBTransaction.READ_WRITE); | 99 db.transaction([storeName], IDBTransaction.READ_WRITE); |
| 95 IDBRequest request = transaction.objectStore(storeName).put(value, key); | 100 IDBRequest request = transaction.objectStore(storeName).put(value, key); |
| 96 request.on.success.add((e) { step2(); }); | 101 request.on.success.add(expectAsync1(step2)); |
| 97 request.on.error.add(fail); | 102 request.on.error.add(fail); |
| 98 } | 103 } |
| 99 | 104 |
| 100 initDb(e) { | 105 initDb(e) { |
| 101 db = e.target.result; | 106 db = e.target.result; |
| 102 if (version != db.version) { | 107 if (version != db.version) { |
| 103 IDBRequest request = db.setVersion(version); | 108 IDBRequest request = db.setVersion(version); |
| 104 request.request.on.success.add((e) { createObjectStore(); step1(); }); | 109 request.on.success.add( |
| 110 expectAsync1((e) { |
| 111 createObjectStore(); |
| 112 step1(); |
| 113 }) |
| 114 ); |
| 105 request.on.error.add(fail); | 115 request.on.error.add(fail); |
| 106 } else { | 116 } else { |
| 107 step1(); | 117 step1(); |
| 108 } | 118 } |
| 109 } | 119 } |
| 110 | 120 |
| 111 IDBRequest request = window.webkitIndexedDB.open(dbName); | 121 IDBRequest request = window.webkitIndexedDB.open(dbName); |
| 112 Expect.isNotNull(request); | 122 Expect.isNotNull(request); |
| 113 request.on.success.add(initDb); | 123 request.on.success.add(expectAsync1(initDb)); |
| 114 request.on.error.add(fail); | 124 request.on.error.add(fail); |
| 115 }; | 125 }; |
| 116 | 126 |
| 117 tests_dynamic() { | 127 tests_dynamic() { |
| 118 asyncTest('test1', 1, testReadWrite(123, 'Hoot!', Expect.equals)); | 128 test('test1', testReadWrite(123, 'Hoot!', Expect.equals)); |
| 119 asyncTest('test2', 1, testReadWrite(123, 12345, Expect.equals)); | 129 test('test2', testReadWrite(123, 12345, Expect.equals)); |
| 120 asyncTest('test3', 1, testReadWrite(123, [1,2,3], Expect.listEquals)); | 130 test('test3', testReadWrite(123, [1,2,3], Expect.listEquals)); |
| 121 asyncTest('test4', 1, testReadWrite(123, const [2, 3, 4], Expect.listEquals)); | 131 test('test4', testReadWrite(123, const [2, 3, 4], Expect.listEquals)); |
| 122 } | 132 } |
| 123 | 133 |
| 124 tests_typed() { | 134 tests_typed() { |
| 125 asyncTest('test1', 1, testReadWriteTyped(123, 'Hoot!', Expect.equals)); | 135 test('test1', testReadWriteTyped(123, 'Hoot!', Expect.equals)); |
| 126 asyncTest('test2', 1, testReadWriteTyped(123, 12345, Expect.equals)); | 136 test('test2', testReadWriteTyped(123, 12345, Expect.equals)); |
| 127 asyncTest('test3', 1, testReadWriteTyped(123, [1,2,3], Expect.listEquals)); | 137 test('test3', testReadWriteTyped(123, [1,2,3], Expect.listEquals)); |
| 128 asyncTest('test4', 1, | 138 test('test4', |
| 129 testReadWriteTyped(123, const [2, 3, 4], Expect.listEquals)); | 139 testReadWriteTyped(123, const [2, 3, 4], Expect.listEquals)); |
| 130 } | 140 } |
| 131 | 141 |
| 132 main() { | 142 main() { |
| 133 useHtmlConfiguration(); | 143 useHtmlConfiguration(); |
| 134 | 144 |
| 135 tests_dynamic(); | 145 tests_dynamic(); |
| 136 tests_typed(); | 146 tests_typed(); |
| 137 } | 147 } |
| OLD | NEW |