dom/indexedDB/test/unit/test_getAll.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

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

mercurial