dom/indexedDB/test/unit/test_getAll.js

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

mercurial