|
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 } |