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