Bug 1816170 - Disable perftest-on-autoland cron. r=aglavic
[gecko.git] / dom / indexedDB / test / unit / test_objectStore_getAllKeys.js
blob15d69e7b93aff91ab946220c66058de41bef3844
1 /**
2  * Any copyright is dedicated to the Public Domain.
3  * http://creativecommons.org/publicdomain/zero/1.0/
4  */
6 /* exported testGenerator */
7 var testGenerator = testSteps();
9 function* testSteps() {
10   const dbName = this.window
11     ? window.location.pathname
12     : "test_objectStore_getAllKeys";
13   const dbVersion = 1;
14   const objectStoreName = "foo";
15   const keyCount = 200;
17   let request = indexedDB.open(dbName, dbVersion);
18   request.onerror = errorHandler;
19   request.onupgradeneeded = grabEventAndContinueHandler;
20   request.onsuccess = unexpectedSuccessHandler;
22   let event = yield undefined;
24   info("Creating database");
26   let db = event.target.result;
27   let objectStore = db.createObjectStore(objectStoreName);
28   for (let i = 0; i < keyCount; i++) {
29     objectStore.add(true, i);
30   }
32   request.onupgradeneeded = unexpectedSuccessHandler;
33   request.onsuccess = grabEventAndContinueHandler;
35   event = yield undefined;
37   db = event.target.result;
38   objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
40   info("Getting all keys");
41   objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
42   event = yield undefined;
44   ok(Array.isArray(event.target.result), "Got an array result");
45   is(event.target.result.length, keyCount, "Got correct array length");
47   let match = true;
48   for (let i = 0; i < keyCount; i++) {
49     if (event.target.result[i] != i) {
50       match = false;
51       break;
52     }
53   }
54   ok(match, "Got correct keys");
56   info("Getting all keys with key range");
57   let keyRange = IDBKeyRange.bound(10, 20, false, true);
58   objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
59   event = yield undefined;
61   ok(Array.isArray(event.target.result), "Got an array result");
62   is(event.target.result.length, 10, "Got correct array length");
64   match = true;
65   for (let i = 10; i < 20; i++) {
66     if (event.target.result[i - 10] != i) {
67       match = false;
68       break;
69     }
70   }
71   ok(match, "Got correct keys");
73   info("Getting all keys with unmatched key range");
74   keyRange = IDBKeyRange.bound(10000, 200000);
75   objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
76   event = yield undefined;
78   ok(Array.isArray(event.target.result), "Got an array result");
79   is(event.target.result.length, 0, "Got correct array length");
81   info("Getting all keys with limit");
82   objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
83   event = yield undefined;
85   ok(Array.isArray(event.target.result), "Got an array result");
86   is(event.target.result.length, 5, "Got correct array length");
88   match = true;
89   for (let i = 0; i < 5; i++) {
90     if (event.target.result[i] != i) {
91       match = false;
92       break;
93     }
94   }
95   ok(match, "Got correct keys");
97   info("Getting all keys with key range and limit");
98   keyRange = IDBKeyRange.bound(10, 20, false, true);
99   objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
100   event = yield undefined;
102   ok(Array.isArray(event.target.result), "Got an array result");
103   is(event.target.result.length, 5, "Got correct array length");
105   match = true;
106   for (let i = 10; i < 15; i++) {
107     if (event.target.result[i - 10] != i) {
108       match = false;
109       break;
110     }
111   }
112   ok(match, "Got correct keys");
114   info("Getting all keys with unmatched key range and limit");
115   keyRange = IDBKeyRange.bound(10000, 200000);
116   objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
117   event = yield undefined;
119   ok(Array.isArray(event.target.result), "Got an array result");
120   is(event.target.result.length, 0, "Got correct array length");
122   finishTest();