dom/indexedDB/test/unit/test_objectStore_getAllKeys.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:a315e9e0252f
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
5
6 let testGenerator = testSteps();
7
8 function testSteps() {
9 const dbName = this.window ?
10 window.location.pathname :
11 "test_objectStore_getAllKeys";
12 const dbVersion = 1;
13 const objectStoreName = "foo";
14 const keyCount = 200;
15
16 let request = indexedDB.open(dbName, dbVersion);
17 request.onerror = errorHandler;
18 request.onupgradeneeded = grabEventAndContinueHandler;
19 request.onsuccess = unexpectedSuccessHandler;
20
21 let event = yield undefined;
22
23 info("Creating database");
24
25 let db = event.target.result;
26 let objectStore = db.createObjectStore(objectStoreName);
27 for (let i = 0; i < keyCount; i++) {
28 objectStore.add(true, i);
29 }
30
31 request.onupgradeneeded = unexpectedSuccessHandler;
32 request.onsuccess = grabEventAndContinueHandler;
33
34 event = yield undefined;
35
36 db = event.target.result;
37 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
38
39 info("Getting all keys");
40 objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
41 event = yield undefined;
42
43 ok(Array.isArray(event.target.result), "Got an array result");
44 is(event.target.result.length, keyCount, "Got correct array length");
45
46 let match = true;
47 for (let i = 0; i < keyCount; i++) {
48 if (event.target.result[i] != i) {
49 match = false;
50 break;
51 }
52 }
53 ok(match, "Got correct keys");
54
55 info("Getting all keys with key range");
56 let keyRange = IDBKeyRange.bound(10, 20, false, true);
57 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
58 event = yield undefined;
59
60 ok(Array.isArray(event.target.result), "Got an array result");
61 is(event.target.result.length, 10, "Got correct array length");
62
63 match = true;
64 for (let i = 10; i < 20; i++) {
65 if (event.target.result[i - 10] != i) {
66 match = false;
67 break;
68 }
69 }
70 ok(match, "Got correct keys");
71
72 info("Getting all keys with unmatched key range");
73 keyRange = IDBKeyRange.bound(10000, 200000);
74 objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
75 event = yield undefined;
76
77 ok(Array.isArray(event.target.result), "Got an array result");
78 is(event.target.result.length, 0, "Got correct array length");
79
80 info("Getting all keys with limit");
81 objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
82 event = yield undefined;
83
84 ok(Array.isArray(event.target.result), "Got an array result");
85 is(event.target.result.length, 5, "Got correct array length");
86
87 match = true;
88 for (let i = 0; i < 5; i++) {
89 if (event.target.result[i] != i) {
90 match = false;
91 break;
92 }
93 }
94 ok(match, "Got correct keys");
95
96 info("Getting all keys with key range and limit");
97 keyRange = IDBKeyRange.bound(10, 20, false, true);
98 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
99 event = yield undefined;
100
101 ok(Array.isArray(event.target.result), "Got an array result");
102 is(event.target.result.length, 5, "Got correct array length");
103
104 match = true;
105 for (let i = 10; i < 15; i++) {
106 if (event.target.result[i - 10] != i) {
107 match = false;
108 break;
109 }
110 }
111 ok(match, "Got correct keys");
112
113 info("Getting all keys with unmatched key range and limit");
114 keyRange = IDBKeyRange.bound(10000, 200000);
115 objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
116 event = yield undefined;
117
118 ok(Array.isArray(event.target.result), "Got an array result");
119 is(event.target.result.length, 0, "Got correct array length");
120
121 finishTest();
122 yield undefined;
123 }

mercurial