OLD | NEW |
---|---|
(Empty) | |
1 // Imported from: | |
2 // * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_ objectStore_getAllKeys.js?force=1 | |
3 // Changes: | |
4 // * added 'use strict' since some ES6 features NYI w/o it | |
5 // * function -> function* | |
6 // * this.window -> window | |
cmumford
2015/08/25 20:22:30
No testGenerator changes here either.
jsbell
2015/08/25 20:45:06
Done.
| |
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 let testGenerator = testSteps(); | |
17 | |
18 function* testSteps() { | |
19 const dbName = window ? | |
20 window.location.pathname : | |
21 "test_objectStore_getAllKeys"; | |
22 indexedDB.deleteDatabase(dbName); | |
23 const dbVersion = 1; | |
24 const objectStoreName = "foo"; | |
25 const keyCount = 200; | |
26 | |
27 let request = indexedDB.open(dbName, dbVersion); | |
28 request.onerror = errorHandler; | |
29 request.onupgradeneeded = grabEventAndContinueHandler; | |
30 request.onsuccess = unexpectedSuccessHandler; | |
31 | |
32 let event = yield undefined; | |
33 | |
34 info("Creating database"); | |
35 | |
36 let db = event.target.result; | |
37 let objectStore = db.createObjectStore(objectStoreName); | |
38 for (let i = 0; i < keyCount; i++) { | |
39 objectStore.add(true, i); | |
40 } | |
41 | |
42 request.onupgradeneeded = unexpectedSuccessHandler; | |
43 request.onsuccess = grabEventAndContinueHandler; | |
44 | |
45 event = yield undefined; | |
46 | |
47 db = event.target.result; | |
48 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); | |
49 | |
50 info("Getting all keys"); | |
51 objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler; | |
52 event = yield undefined; | |
53 | |
54 ok(Array.isArray(event.target.result), "Got an array result"); | |
55 is(event.target.result.length, keyCount, "Got correct array length"); | |
56 | |
57 let match = true; | |
58 for (let i = 0; i < keyCount; i++) { | |
59 if (event.target.result[i] != i) { | |
60 match = false; | |
61 break; | |
62 } | |
63 } | |
64 ok(match, "Got correct keys"); | |
65 | |
66 info("Getting all keys with key range"); | |
67 let keyRange = IDBKeyRange.bound(10, 20, false, true); | |
68 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler; | |
69 event = yield undefined; | |
70 | |
71 ok(Array.isArray(event.target.result), "Got an array result"); | |
72 is(event.target.result.length, 10, "Got correct array length"); | |
73 | |
74 match = true; | |
75 for (let i = 10; i < 20; i++) { | |
76 if (event.target.result[i - 10] != i) { | |
77 match = false; | |
78 break; | |
79 } | |
80 } | |
81 ok(match, "Got correct keys"); | |
82 | |
83 info("Getting all keys with unmatched key range"); | |
84 keyRange = IDBKeyRange.bound(10000, 200000); | |
85 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler; | |
86 event = yield undefined; | |
87 | |
88 ok(Array.isArray(event.target.result), "Got an array result"); | |
89 is(event.target.result.length, 0, "Got correct array length"); | |
90 | |
91 info("Getting all keys with limit"); | |
92 objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler; | |
93 event = yield undefined; | |
94 | |
95 ok(Array.isArray(event.target.result), "Got an array result"); | |
96 is(event.target.result.length, 5, "Got correct array length"); | |
97 | |
98 match = true; | |
99 for (let i = 0; i < 5; i++) { | |
100 if (event.target.result[i] != i) { | |
101 match = false; | |
102 break; | |
103 } | |
104 } | |
105 ok(match, "Got correct keys"); | |
106 | |
107 info("Getting all keys with key range and limit"); | |
108 keyRange = IDBKeyRange.bound(10, 20, false, true); | |
109 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler; | |
110 event = yield undefined; | |
111 | |
112 ok(Array.isArray(event.target.result), "Got an array result"); | |
113 is(event.target.result.length, 5, "Got correct array length"); | |
114 | |
115 match = true; | |
116 for (let i = 10; i < 15; i++) { | |
117 if (event.target.result[i - 10] != i) { | |
118 match = false; | |
119 break; | |
120 } | |
121 } | |
122 ok(match, "Got correct keys"); | |
123 | |
124 info("Getting all keys with unmatched key range and limit"); | |
125 keyRange = IDBKeyRange.bound(10000, 200000); | |
126 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler; | |
127 event = yield undefined; | |
128 | |
129 ok(Array.isArray(event.target.result), "Got an array result"); | |
130 is(event.target.result.length, 0, "Got correct array length"); | |
131 | |
132 finishTest(); | |
133 yield undefined; | |
134 } | |
OLD | NEW |