OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <title>IndexedDB: Test IDBObjectStore.getKey()</title> |
| 3 <script src="../../resources/testharness.js"></script> |
| 4 <script src="../../resources/testharnessreport.js"></script> |
| 5 <script> |
| 6 |
| 7 function getkey_test(func, name) { |
| 8 return async_test(function(t) { |
| 9 var del = indexedDB.deleteDatabase(name); |
| 10 del.onerror = t.unreached_func('deleteDatabase failed'); |
| 11 var open = indexedDB.open(name); |
| 12 open.onerror = t.unreached_func('open failed'); |
| 13 open.onupgradeneeded = t.step_func(function() { |
| 14 var db = open.result; |
| 15 |
| 16 var basic = db.createObjectStore('basic'); |
| 17 var key_path_store = db.createObjectStore('key path', |
| 18 {keyPath: 'id'}); |
| 19 var key_generator_store = db.createObjectStore('key generator', |
| 20 {autoIncrement: true}); |
| 21 var key_generator_and_path_store = db.createObjectStore( |
| 22 'key generator and key path', |
| 23 {autoIncrement: true, key_path: 'id'}); |
| 24 |
| 25 for (var i = 1; i <= 10; ++i) { |
| 26 basic.put('value: ' + i, i); |
| 27 key_path_store.put({id: i}); |
| 28 key_generator_store.put('value: ' + i); |
| 29 key_generator_and_path_store.put({}); |
| 30 } |
| 31 }); |
| 32 open.onsuccess = t.step_func(function() { |
| 33 var db = open.result; |
| 34 func(t, db); |
| 35 }); |
| 36 }, name); |
| 37 } |
| 38 |
| 39 getkey_test(function(t, db) { |
| 40 var tx = db.transaction('basic'); |
| 41 var store = tx.objectStore('basic'); |
| 42 assert_throws(TypeError(), function() { store.getKey(); }); |
| 43 assert_throws({name: 'DataError'}, function() { store.getKey(null); }); |
| 44 assert_throws({name: 'DataError'}, function() { store.getKey({}); }); |
| 45 t.done(); |
| 46 }, 'IDBObjectStore.getKey() - invalid parameters'); |
| 47 |
| 48 [ |
| 49 'basic', |
| 50 'key path', |
| 51 'key generator', |
| 52 'key generator and key path' |
| 53 ].forEach(function(store_name) { |
| 54 |
| 55 getkey_test(function(t, db) { |
| 56 var tx = db.transaction(store_name); |
| 57 var store = tx.objectStore(store_name); |
| 58 var request = store.getKey(5); |
| 59 request.onerror = t.unreached_func('request failed'); |
| 60 request.onsuccess = t.step_func(function() { |
| 61 assert_equals(request.result, 5); |
| 62 }); |
| 63 tx.onabort = t.unreached_func('transaction aborted'); |
| 64 tx.oncomplete = t.step_func(function() { t.done(); }); |
| 65 }, 'IDBObjectStore.getKey() - ' + store_name + ' - key'); |
| 66 |
| 67 getkey_test(function(t, db) { |
| 68 var tx = db.transaction(store_name); |
| 69 var store = tx.objectStore(store_name); |
| 70 var request = store.getKey(IDBKeyRange.lowerBound(4.5)); |
| 71 request.onerror = t.unreached_func('request failed'); |
| 72 request.onsuccess = t.step_func(function() { |
| 73 assert_equals(request.result, 5); |
| 74 }); |
| 75 tx.onabort = t.unreached_func('transaction aborted'); |
| 76 tx.oncomplete = t.step_func(function() { t.done(); }); |
| 77 }, 'IDBObjectStore.getKey() - ' + store_name + ' - range'); |
| 78 |
| 79 getkey_test(function(t, db) { |
| 80 var tx = db.transaction(store_name); |
| 81 var store = tx.objectStore(store_name); |
| 82 var request = store.getKey(11); |
| 83 request.onerror = t.unreached_func('request failed'); |
| 84 request.onsuccess = t.step_func(function() { |
| 85 assert_equals(request.result, undefined); |
| 86 }); |
| 87 tx.onabort = t.unreached_func('transaction aborted'); |
| 88 tx.oncomplete = t.step_func(function() { t.done(); }); |
| 89 }, 'IDBObjectStore.getKey() - ' + store_name + ' - key - no match'); |
| 90 |
| 91 getkey_test(function(t, db) { |
| 92 var tx = db.transaction(store_name); |
| 93 var store = tx.objectStore(store_name); |
| 94 var request = store.getKey(IDBKeyRange.lowerBound(11)); |
| 95 request.onerror = t.unreached_func('request failed'); |
| 96 request.onsuccess = t.step_func(function() { |
| 97 assert_equals(request.result, undefined); |
| 98 }); |
| 99 tx.onabort = t.unreached_func('transaction aborted'); |
| 100 tx.oncomplete = t.step_func(function() { t.done(); }); |
| 101 }, 'IDBObjectStore.getKey() - ' + store_name + ' - range - no match'); |
| 102 }); |
| 103 |
| 104 </script> |
OLD | NEW |