dom/indexedDB/test/unit/test_objectCursors.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:49ac1ea1f107
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
5
6 var testGenerator = testSteps();
7
8 function testSteps()
9 {
10 const name = this.window ? window.location.pathname : "Splendid Test";
11
12 const objectStores = [
13 { name: "a", autoIncrement: false },
14 { name: "b", autoIncrement: true }
15 ];
16
17 const indexes = [
18 { name: "a", options: { } },
19 { name: "b", options: { unique: true } }
20 ];
21
22 var j = 0;
23 for (let i in objectStores) {
24 let request = indexedDB.open(name, ++j);
25 request.onerror = errorHandler;
26 request.onupgradeneeded = grabEventAndContinueHandler;
27 let event = yield undefined;
28
29 let db = event.target.result;
30
31 let objectStore =
32 db.createObjectStore(objectStores[i].name,
33 { keyPath: "id",
34 autoIncrement: objectStores[i].autoIncrement });
35
36 for (let j in indexes) {
37 objectStore.createIndex(indexes[j].name, "name", indexes[j].options);
38 }
39
40 let data = { name: "Ben" };
41 if (!objectStores[i].autoIncrement) {
42 data.id = 1;
43 }
44
45 request = objectStore.add(data);
46 request.onerror = errorHandler;
47 request.onsuccess = grabEventAndContinueHandler;
48 event = yield undefined;
49
50 ok(event.target.result == 1 || event.target.result == 2, "Good id");
51 db.close();
52 }
53
54 executeSoon(function() { testGenerator.next(); });
55 yield undefined;
56
57 let request = indexedDB.open(name, j);
58 request.onerror = errorHandler;
59 request.onsuccess = grabEventAndContinueHandler;
60 let event = yield undefined;
61
62 let db = event.target.result;
63
64 for (let i in objectStores) {
65 for (let j in indexes) {
66 let objectStore = db.transaction(objectStores[i].name)
67 .objectStore(objectStores[i].name);
68 let index = objectStore.index(indexes[j].name);
69
70 request = index.openCursor();
71 request.onerror = errorHandler;
72 request.onsuccess = function (event) {
73 is(event.target.result.value.name, "Ben", "Good object");
74 executeSoon(function() { testGenerator.next(); });
75 }
76 yield undefined;
77 }
78 }
79
80 finishTest();
81 yield undefined;
82 }
83

mercurial