| 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 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 } |
| OLD | NEW |