2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
6 /* exported testGenerator */
7 var testGenerator = testSteps();
9 function* testSteps() {
10 const dbName = this.window
11 ? window.location.pathname
12 : "test_objectStore_getAllKeys";
14 const objectStoreName = "foo";
17 let request = indexedDB.open(dbName, dbVersion);
18 request.onerror = errorHandler;
19 request.onupgradeneeded = grabEventAndContinueHandler;
20 request.onsuccess = unexpectedSuccessHandler;
22 let event = yield undefined;
24 info("Creating database");
26 let db = event.target.result;
27 let objectStore = db.createObjectStore(objectStoreName);
28 for (let i = 0; i < keyCount; i++) {
29 objectStore.add(true, i);
32 request.onupgradeneeded = unexpectedSuccessHandler;
33 request.onsuccess = grabEventAndContinueHandler;
35 event = yield undefined;
37 db = event.target.result;
38 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
40 info("Getting all keys");
41 objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
42 event = yield undefined;
44 ok(Array.isArray(event.target.result), "Got an array result");
45 is(event.target.result.length, keyCount, "Got correct array length");
48 for (let i = 0; i < keyCount; i++) {
49 if (event.target.result[i] != i) {
54 ok(match, "Got correct keys");
56 info("Getting all keys with key range");
57 let keyRange = IDBKeyRange.bound(10, 20, false, true);
58 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
59 event = yield undefined;
61 ok(Array.isArray(event.target.result), "Got an array result");
62 is(event.target.result.length, 10, "Got correct array length");
65 for (let i = 10; i < 20; i++) {
66 if (event.target.result[i - 10] != i) {
71 ok(match, "Got correct keys");
73 info("Getting all keys with unmatched key range");
74 keyRange = IDBKeyRange.bound(10000, 200000);
75 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
76 event = yield undefined;
78 ok(Array.isArray(event.target.result), "Got an array result");
79 is(event.target.result.length, 0, "Got correct array length");
81 info("Getting all keys with limit");
82 objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
83 event = yield undefined;
85 ok(Array.isArray(event.target.result), "Got an array result");
86 is(event.target.result.length, 5, "Got correct array length");
89 for (let i = 0; i < 5; i++) {
90 if (event.target.result[i] != i) {
95 ok(match, "Got correct keys");
97 info("Getting all keys with key range and limit");
98 keyRange = IDBKeyRange.bound(10, 20, false, true);
99 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
100 event = yield undefined;
102 ok(Array.isArray(event.target.result), "Got an array result");
103 is(event.target.result.length, 5, "Got correct array length");
106 for (let i = 10; i < 15; i++) {
107 if (event.target.result[i - 10] != i) {
112 ok(match, "Got correct keys");
114 info("Getting all keys with unmatched key range and limit");
115 keyRange = IDBKeyRange.bound(10000, 200000);
116 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
117 event = yield undefined;
119 ok(Array.isArray(event.target.result), "Got an array result");
120 is(event.target.result.length, 0, "Got correct array length");