test_getAll.js (6503B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 var testGenerator = testSteps(); 7 8 function* testSteps() { 9 const name = this.window ? window.location.pathname : "Splendid Test"; 10 11 const values = ["a", "1", 1, "foo", 300, true, false, 4.5, null]; 12 13 let request = indexedDB.open(name, 1); 14 request.onerror = errorHandler; 15 request.onupgradeneeded = grabEventAndContinueHandler; 16 let event = yield undefined; 17 18 let db = event.target.result; 19 20 let objectStore = db.createObjectStore("foo", { autoIncrement: true }); 21 22 request.onsuccess = grabEventAndContinueHandler; 23 request = objectStore.mozGetAll(); 24 request.onerror = errorHandler; 25 request.onsuccess = grabEventAndContinueHandler; 26 event = yield undefined; 27 28 is(event.target.result instanceof Array, true, "Got an array object"); 29 is(event.target.result.length, 0, "No elements"); 30 31 let addedCount = 0; 32 33 for (let i in values) { 34 request = objectStore.add(values[i]); 35 request.onerror = errorHandler; 36 request.onsuccess = function () { 37 if (++addedCount == values.length) { 38 executeSoon(function () { 39 testGenerator.next(); 40 }); 41 } 42 }; 43 } 44 yield undefined; 45 yield undefined; 46 47 request = db.transaction("foo").objectStore("foo").mozGetAll(); 48 request.onerror = errorHandler; 49 request.onsuccess = grabEventAndContinueHandler; 50 event = yield undefined; 51 52 is(event.target.result instanceof Array, true, "Got an array object"); 53 is(event.target.result.length, values.length, "Same length"); 54 55 for (let i in event.target.result) { 56 is(event.target.result[i], values[i], "Same value"); 57 } 58 59 request = db.transaction("foo").objectStore("foo").mozGetAll(null, 5); 60 request.onerror = errorHandler; 61 request.onsuccess = grabEventAndContinueHandler; 62 event = yield undefined; 63 64 is(event.target.result instanceof Array, true, "Got an array object"); 65 is(event.target.result.length, 5, "Correct length"); 66 67 for (let i in event.target.result) { 68 is(event.target.result[i], values[i], "Same value"); 69 } 70 71 let keyRange = IDBKeyRange.bound(1, 9); 72 73 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange); 74 request.onerror = errorHandler; 75 request.onsuccess = grabEventAndContinueHandler; 76 event = yield undefined; 77 78 is(event.target.result instanceof Array, true, "Got an array object"); 79 is(event.target.result.length, values.length, "Correct length"); 80 81 for (let i in event.target.result) { 82 is(event.target.result[i], values[i], "Same value"); 83 } 84 85 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0); 86 request.onerror = errorHandler; 87 request.onsuccess = grabEventAndContinueHandler; 88 event = yield undefined; 89 90 is(event.target.result instanceof Array, true, "Got an array object"); 91 is(event.target.result.length, values.length, "Correct length"); 92 93 for (let i in event.target.result) { 94 is(event.target.result[i], values[i], "Same value"); 95 } 96 97 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, null); 98 request.onerror = errorHandler; 99 request.onsuccess = grabEventAndContinueHandler; 100 event = yield undefined; 101 102 is(event.target.result instanceof Array, true, "Got an array object"); 103 is(event.target.result.length, values.length, "Correct length"); 104 105 for (let i in event.target.result) { 106 is(event.target.result[i], values[i], "Same value"); 107 } 108 109 request = db 110 .transaction("foo") 111 .objectStore("foo") 112 .mozGetAll(keyRange, undefined); 113 request.onerror = errorHandler; 114 request.onsuccess = grabEventAndContinueHandler; 115 event = yield undefined; 116 117 is(event.target.result instanceof Array, true, "Got an array object"); 118 is(event.target.result.length, values.length, "Correct length"); 119 120 for (let i in event.target.result) { 121 is(event.target.result[i], values[i], "Same value"); 122 } 123 124 keyRange = IDBKeyRange.bound(4, 7); 125 126 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange); 127 request.onerror = errorHandler; 128 request.onsuccess = grabEventAndContinueHandler; 129 event = yield undefined; 130 131 is(event.target.result instanceof Array, true, "Got an array object"); 132 is(event.target.result.length, 4, "Correct length"); 133 134 for (let i in event.target.result) { 135 is(event.target.result[i], values[parseInt(i) + 3], "Same value"); 136 } 137 138 // Get should take a key range also but it doesn't return an array. 139 request = db.transaction("foo").objectStore("foo").get(keyRange); 140 request.onerror = errorHandler; 141 request.onsuccess = grabEventAndContinueHandler; 142 event = yield undefined; 143 144 is(event.target.result instanceof Array, false, "Not an array object"); 145 is(event.target.result, values[3], "Correct value"); 146 147 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 2); 148 request.onerror = errorHandler; 149 request.onsuccess = grabEventAndContinueHandler; 150 event = yield undefined; 151 152 is(event.target.result instanceof Array, true, "Got an array object"); 153 is(event.target.result.length, 2, "Correct length"); 154 155 for (let i in event.target.result) { 156 is(event.target.result[i], values[parseInt(i) + 3], "Same value"); 157 } 158 159 keyRange = IDBKeyRange.bound(4, 7); 160 161 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 50); 162 request.onerror = errorHandler; 163 request.onsuccess = grabEventAndContinueHandler; 164 event = yield undefined; 165 166 is(event.target.result instanceof Array, true, "Got an array object"); 167 is(event.target.result.length, 4, "Correct length"); 168 169 for (let i in event.target.result) { 170 is(event.target.result[i], values[parseInt(i) + 3], "Same value"); 171 } 172 173 keyRange = IDBKeyRange.bound(4, 7); 174 175 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0); 176 request.onerror = errorHandler; 177 request.onsuccess = grabEventAndContinueHandler; 178 event = yield undefined; 179 180 is(event.target.result instanceof Array, true, "Got an array object"); 181 is(event.target.result.length, 4, "Correct length"); 182 183 keyRange = IDBKeyRange.bound(4, 7, true, true); 184 185 request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange); 186 request.onerror = errorHandler; 187 request.onsuccess = grabEventAndContinueHandler; 188 event = yield undefined; 189 190 is(event.target.result instanceof Array, true, "Got an array object"); 191 is(event.target.result.length, 2, "Correct length"); 192 193 for (let i in event.target.result) { 194 is(event.target.result[i], values[parseInt(i) + 4], "Same value"); 195 } 196 197 finishTest(); 198 }