OLD | NEW |
---|---|
(Empty) | |
1 // Imported from: | |
2 // * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_ index_getAllObjects.js?force=1 | |
cmumford
2015/08/25 18:42:31
This URL doesn't match this file does it?
Also, w
| |
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 const objectStoreName = "People"; | |
23 | |
24 const objectStoreData = [ | |
25 { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, | |
26 { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, | |
27 { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } }, | |
28 { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, | |
29 { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, | |
30 { key: "237-23-7737", value: { name: "Pat", height: 65 } } | |
31 ]; | |
32 | |
33 const indexData = [ | |
34 { name: "name", keyPath: "name", options: { unique: true } }, | |
35 { name: "height", keyPath: "height", options: { unique: false } }, | |
36 { name: "weight", keyPath: "weight", options: { unique: false } } | |
37 ]; | |
38 | |
39 const objectStoreDataNameSort = [ | |
40 { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, | |
41 { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, | |
42 { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, | |
43 { key: "237-23-7737", value: { name: "Pat", height: 65 } }, | |
44 { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } }, | |
45 { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } } | |
46 ]; | |
47 | |
48 const objectStoreDataWeightSort = [ | |
49 { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, | |
50 { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, | |
51 { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, | |
52 { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, | |
53 { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } } | |
54 ]; | |
55 | |
56 const objectStoreDataHeightSort = [ | |
57 { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, | |
58 { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, | |
59 { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, | |
60 { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, | |
61 { key: "237-23-7737", value: { name: "Pat", height: 65 } }, | |
62 { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } } | |
63 ]; | |
64 | |
65 let request = indexedDB.open(name, 1); | |
66 request.onerror = errorHandler; | |
67 request.onupgradeneeded = grabEventAndContinueHandler; | |
68 request.onsuccess = grabEventAndContinueHandler; | |
69 let event = yield undefined; | |
70 | |
71 let db = event.target.result; | |
72 | |
73 let objectStore = db.createObjectStore(objectStoreName); | |
74 | |
75 // First, add all our data to the object store. | |
76 let addedData = 0; | |
77 for (let i in objectStoreData) { | |
78 request = objectStore.add(objectStoreData[i].value, | |
79 objectStoreData[i].key); | |
80 request.onerror = errorHandler; | |
81 request.onsuccess = function(event) { | |
82 if (++addedData == objectStoreData.length) { | |
83 testGenerator.next(event); | |
84 } | |
85 } | |
86 } | |
87 yield undefined; | |
88 ok(true, "1"); | |
89 | |
90 // Now create the indexes. | |
91 for (let i in indexData) { | |
92 objectStore.createIndex(indexData[i].name, indexData[i].keyPath, | |
93 indexData[i].options); | |
94 } | |
95 | |
96 is(objectStore.indexNames.length, indexData.length, "Good index count"); | |
97 yield undefined; | |
98 | |
99 ok(true, "2"); | |
100 objectStore = db.transaction(objectStoreName) | |
101 .objectStore(objectStoreName); | |
102 | |
103 request = objectStore.index("height").mozGetAllKeys(65); | |
104 request.onerror = errorHandler; | |
105 request.onsuccess = grabEventAndContinueHandler; | |
106 event = yield undefined; | |
107 ok(true, "3"); | |
108 | |
109 is(event.target.result instanceof Array, true, "Got an array object"); | |
110 is(event.target.result.length, 2, "Correct length"); | |
111 | |
112 for (let i in event.target.result) { | |
113 is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, | |
114 "Correct key"); | |
115 } | |
116 | |
117 request = objectStore.index("height").mozGetAllKeys(65, 0); | |
118 request.onerror = errorHandler; | |
119 request.onsuccess = grabEventAndContinueHandler; | |
120 event = yield undefined; | |
121 ok(true, "3"); | |
122 | |
123 is(event.target.result instanceof Array, true, "Got an array object"); | |
124 is(event.target.result.length, 2, "Correct length"); | |
125 | |
126 for (let i in event.target.result) { | |
127 is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, | |
128 "Correct key"); | |
129 } | |
130 | |
131 request = objectStore.index("height").mozGetAllKeys(65, null); | |
132 request.onerror = errorHandler; | |
133 request.onsuccess = grabEventAndContinueHandler; | |
134 event = yield undefined; | |
135 ok(true, "3"); | |
136 | |
137 is(event.target.result instanceof Array, true, "Got an array object"); | |
138 is(event.target.result.length, 2, "Correct length"); | |
139 | |
140 for (let i in event.target.result) { | |
141 is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, | |
142 "Correct key"); | |
143 } | |
144 | |
145 request = objectStore.index("height").mozGetAllKeys(65, undefined); | |
146 request.onerror = errorHandler; | |
147 request.onsuccess = grabEventAndContinueHandler; | |
148 event = yield undefined; | |
149 ok(true, "3"); | |
150 | |
151 is(event.target.result instanceof Array, true, "Got an array object"); | |
152 is(event.target.result.length, 2, "Correct length"); | |
153 | |
154 for (let i in event.target.result) { | |
155 is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, | |
156 "Correct key"); | |
157 } | |
158 | |
159 request = objectStore.index("height").mozGetAllKeys(); | |
160 request.onerror = errorHandler; | |
161 request.onsuccess = grabEventAndContinueHandler; | |
162 event = yield undefined; | |
163 ok(true, "4"); | |
164 | |
165 is(event.target.result instanceof Array, true, "Got an array object"); | |
166 is(event.target.result.length, objectStoreDataHeightSort.length, | |
167 "Correct length"); | |
168 | |
169 for (let i in event.target.result) { | |
170 is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); | |
171 } | |
172 | |
173 request = objectStore.index("height").mozGetAllKeys(null, 4); | |
174 request.onerror = errorHandler; | |
175 request.onsuccess = grabEventAndContinueHandler; | |
176 event = yield undefined; | |
177 | |
178 ok(true, "5"); | |
179 is(event.target.result instanceof Array, true, "Got an array object"); | |
180 is(event.target.result.length, 4, "Correct length"); | |
181 | |
182 for (let i in event.target.result) { | |
183 is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); | |
184 } | |
185 | |
186 request = objectStore.index("height").mozGetAllKeys(65, 1); | |
187 request.onerror = errorHandler; | |
188 request.onsuccess = grabEventAndContinueHandler; | |
189 event = yield undefined; | |
190 | |
191 ok(true, "6"); | |
192 is(event.target.result instanceof Array, true, "Got an array object"); | |
193 is(event.target.result.length, 1, "Correct length"); | |
194 | |
195 for (let i in event.target.result) { | |
196 is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, | |
197 "Correct key"); | |
198 } | |
199 | |
200 finishTest(); | |
201 yield undefined; | |
202 } | |
OLD | NEW |