Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(397)

Side by Side Diff: LayoutTests/storage/indexeddb/mozilla/resources/test_index_getAll.js

Issue 1312983006: Import Mozilla's IndexedDB getAll/getAllKeys tests (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Comment update/whitespace Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Imported from:
2 // * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_ index_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 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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698