test_objectStore_getAllKeys.js (3639B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const dbName = this.window 11 ? window.location.pathname 12 : "test_objectStore_getAllKeys"; 13 const dbVersion = 1; 14 const objectStoreName = "foo"; 15 const keyCount = 200; 16 17 let request = indexedDB.open(dbName, dbVersion); 18 request.onerror = errorHandler; 19 request.onupgradeneeded = grabEventAndContinueHandler; 20 request.onsuccess = unexpectedSuccessHandler; 21 22 let event = yield undefined; 23 24 info("Creating database"); 25 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); 30 } 31 32 request.onupgradeneeded = unexpectedSuccessHandler; 33 request.onsuccess = grabEventAndContinueHandler; 34 35 event = yield undefined; 36 37 db = event.target.result; 38 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); 39 40 info("Getting all keys"); 41 objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler; 42 event = yield undefined; 43 44 ok(Array.isArray(event.target.result), "Got an array result"); 45 is(event.target.result.length, keyCount, "Got correct array length"); 46 47 let match = true; 48 for (let i = 0; i < keyCount; i++) { 49 if (event.target.result[i] != i) { 50 match = false; 51 break; 52 } 53 } 54 ok(match, "Got correct keys"); 55 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; 60 61 ok(Array.isArray(event.target.result), "Got an array result"); 62 is(event.target.result.length, 10, "Got correct array length"); 63 64 match = true; 65 for (let i = 10; i < 20; i++) { 66 if (event.target.result[i - 10] != i) { 67 match = false; 68 break; 69 } 70 } 71 ok(match, "Got correct keys"); 72 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; 77 78 ok(Array.isArray(event.target.result), "Got an array result"); 79 is(event.target.result.length, 0, "Got correct array length"); 80 81 info("Getting all keys with limit"); 82 objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler; 83 event = yield undefined; 84 85 ok(Array.isArray(event.target.result), "Got an array result"); 86 is(event.target.result.length, 5, "Got correct array length"); 87 88 match = true; 89 for (let i = 0; i < 5; i++) { 90 if (event.target.result[i] != i) { 91 match = false; 92 break; 93 } 94 } 95 ok(match, "Got correct keys"); 96 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; 101 102 ok(Array.isArray(event.target.result), "Got an array result"); 103 is(event.target.result.length, 5, "Got correct array length"); 104 105 match = true; 106 for (let i = 10; i < 15; i++) { 107 if (event.target.result[i - 10] != i) { 108 match = false; 109 break; 110 } 111 } 112 ok(match, "Got correct keys"); 113 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; 118 119 ok(Array.isArray(event.target.result), "Got an array result"); 120 is(event.target.result.length, 0, "Got correct array length"); 121 122 finishTest(); 123 }