| <!doctype html> |
| <meta charset=utf-8> |
| <title>IndexedDB: Test IDBObjectStore.getKey()</title> |
| <meta name=timeout content=long> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="support.js"></script> |
| <script> |
| |
| function getkey_test(func, name) { |
| indexeddb_test( |
| function(t, db, tx) { |
| var basic = db.createObjectStore('basic'); |
| var key_path_store = db.createObjectStore('key path', |
| {keyPath: 'id'}); |
| var key_generator_store = db.createObjectStore('key generator', |
| {autoIncrement: true}); |
| var key_generator_and_path_store = db.createObjectStore( |
| 'key generator and key path', |
| {autoIncrement: true, key_path: 'id'}); |
| |
| for (var i = 1; i <= 10; ++i) { |
| basic.put('value: ' + i, i); |
| key_path_store.put({id: i}); |
| key_generator_store.put('value: ' + i); |
| key_generator_and_path_store.put({}); |
| } |
| }, |
| func, |
| name |
| ); |
| } |
| |
| getkey_test(function(t, db) { |
| var tx = db.transaction('basic'); |
| var store = tx.objectStore('basic'); |
| assert_throws(TypeError(), function() { store.getKey(); }); |
| assert_throws({name: 'DataError'}, function() { store.getKey(null); }); |
| assert_throws({name: 'DataError'}, function() { store.getKey({}); }); |
| t.done(); |
| }, 'IDBObjectStore.getKey() - invalid parameters'); |
| |
| [ |
| 'basic', |
| 'key path', |
| 'key generator', |
| 'key generator and key path' |
| ].forEach(function(store_name) { |
| |
| getkey_test(function(t, db) { |
| var tx = db.transaction(store_name); |
| var store = tx.objectStore(store_name); |
| var request = store.getKey(5); |
| request.onerror = t.unreached_func('request failed'); |
| request.onsuccess = t.step_func(function() { |
| assert_equals(request.result, 5); |
| }); |
| tx.onabort = t.unreached_func('transaction aborted'); |
| tx.oncomplete = t.step_func(function() { t.done(); }); |
| }, 'IDBObjectStore.getKey() - ' + store_name + ' - key'); |
| |
| getkey_test(function(t, db) { |
| var tx = db.transaction(store_name); |
| var store = tx.objectStore(store_name); |
| var request = store.getKey(IDBKeyRange.lowerBound(4.5)); |
| request.onerror = t.unreached_func('request failed'); |
| request.onsuccess = t.step_func(function() { |
| assert_equals(request.result, 5); |
| }); |
| tx.onabort = t.unreached_func('transaction aborted'); |
| tx.oncomplete = t.step_func(function() { t.done(); }); |
| }, 'IDBObjectStore.getKey() - ' + store_name + ' - range'); |
| |
| getkey_test(function(t, db) { |
| var tx = db.transaction(store_name); |
| var store = tx.objectStore(store_name); |
| var request = store.getKey(11); |
| request.onerror = t.unreached_func('request failed'); |
| request.onsuccess = t.step_func(function() { |
| assert_equals(request.result, undefined); |
| }); |
| tx.onabort = t.unreached_func('transaction aborted'); |
| tx.oncomplete = t.step_func(function() { t.done(); }); |
| }, 'IDBObjectStore.getKey() - ' + store_name + ' - key - no match'); |
| |
| getkey_test(function(t, db) { |
| var tx = db.transaction(store_name); |
| var store = tx.objectStore(store_name); |
| var request = store.getKey(IDBKeyRange.lowerBound(11)); |
| request.onerror = t.unreached_func('request failed'); |
| request.onsuccess = t.step_func(function() { |
| assert_equals(request.result, undefined); |
| }); |
| tx.onabort = t.unreached_func('transaction aborted'); |
| tx.oncomplete = t.step_func(function() { t.done(); }); |
| }, 'IDBObjectStore.getKey() - ' + store_name + ' - range - no match'); |
| }); |
| |
| </script> |