|
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 var data = [ |
|
13 { name: "inline key; key generator", |
|
14 autoIncrement: true, |
|
15 storedObject: {name: "Lincoln"}, |
|
16 keyName: "id", |
|
17 keyValue: undefined, |
|
18 }, |
|
19 { name: "inline key; no key generator", |
|
20 autoIncrement: false, |
|
21 storedObject: {id: 1, name: "Lincoln"}, |
|
22 keyName: "id", |
|
23 keyValue: undefined, |
|
24 }, |
|
25 { name: "out of line key; key generator", |
|
26 autoIncrement: true, |
|
27 storedObject: {name: "Lincoln"}, |
|
28 keyName: undefined, |
|
29 keyValue: undefined, |
|
30 }, |
|
31 { name: "out of line key; no key generator", |
|
32 autoIncrement: false, |
|
33 storedObject: {name: "Lincoln"}, |
|
34 keyName: null, |
|
35 keyValue: 1, |
|
36 } |
|
37 ]; |
|
38 |
|
39 for (let i = 0; i < data.length; i++) { |
|
40 let test = data[i]; |
|
41 |
|
42 let request = indexedDB.open(name, i+1); |
|
43 request.onerror = errorHandler; |
|
44 request.onupgradeneeded = grabEventAndContinueHandler; |
|
45 let event = yield undefined; |
|
46 |
|
47 let db = event.target.result; |
|
48 |
|
49 let objectStore = db.createObjectStore(test.name, |
|
50 { keyPath: test.keyName, |
|
51 autoIncrement: test.autoIncrement }); |
|
52 |
|
53 request = objectStore.add(test.storedObject, test.keyValue); |
|
54 request.onerror = errorHandler; |
|
55 request.onsuccess = grabEventAndContinueHandler; |
|
56 event = yield undefined; |
|
57 |
|
58 let id = event.target.result; |
|
59 request = objectStore.get(id); |
|
60 request.onerror = errorHandler; |
|
61 request.onsuccess = grabEventAndContinueHandler; |
|
62 event = yield undefined; |
|
63 |
|
64 // Sanity check! |
|
65 is(test.storedObject.name, event.target.result.name, |
|
66 "The correct object was stored."); |
|
67 |
|
68 request = objectStore.delete(id); |
|
69 request.onerror = errorHandler; |
|
70 request.onsuccess = grabEventAndContinueHandler; |
|
71 event = yield undefined; |
|
72 |
|
73 // Make sure it was removed. |
|
74 request = objectStore.get(id); |
|
75 request.onerror = errorHandler; |
|
76 request.onsuccess = grabEventAndContinueHandler; |
|
77 event = yield undefined; |
|
78 |
|
79 ok(event.target.result === undefined, "Object was deleted"); |
|
80 db.close(); |
|
81 } |
|
82 |
|
83 finishTest(); |
|
84 yield undefined; |
|
85 } |
|
86 |