Wed, 31 Dec 2014 06:55:50 +0100
Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
6 if (!this.window) {
7 this.runTest = function() {
8 todo(false, "Test disabled in xpcshell test suite for now");
9 finishTest();
10 }
11 }
13 var testGenerator = testSteps();
15 function testSteps()
16 {
17 const name = this.window ? window.location.pathname : "Splendid Test";
18 const osName = "foo";
20 let request = indexedDB.open(name, 1);
21 request.onerror = errorHandler;
22 request.onupgradeneeded = grabEventAndContinueHandler;
23 request.onsuccess = grabEventAndContinueHandler;
24 let event = yield undefined;
26 let db = event.target.result;
27 is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
29 db.createObjectStore(osName, { autoIncrement: "true" });
31 yield undefined;
33 let key1, key2;
35 request = db.transaction([osName], "readwrite")
36 .objectStore(osName)
37 .add({});
38 request.onerror = errorHandler;
39 request.onsuccess = function(event) {
40 is(event.target.transaction.mode, "readwrite", "Correct mode");
41 key1 = event.target.result;
42 testGenerator.next();
43 }
44 yield undefined;
46 request = db.transaction(osName, "readwrite").objectStore(osName).add({});
47 request.onerror = errorHandler;
48 request.onsuccess = function(event) {
49 is(event.target.transaction.mode, "readwrite", "Correct mode");
50 key2 = event.target.result;
51 testGenerator.next();
52 }
53 yield undefined;
55 request = db.transaction([osName], "readwrite")
56 .objectStore(osName)
57 .put({}, key1);
58 request.onerror = errorHandler;
59 request.onsuccess = function(event) {
60 is(event.target.transaction.mode, "readwrite", "Correct mode");
61 testGenerator.next();
62 }
63 yield undefined;
65 request = db.transaction(osName, "readwrite")
66 .objectStore(osName)
67 .put({}, key2);
68 request.onerror = errorHandler;
69 request.onsuccess = function(event) {
70 is(event.target.transaction.mode, "readwrite", "Correct mode");
71 testGenerator.next();
72 }
73 yield undefined;
75 request = db.transaction([osName], "readwrite")
76 .objectStore(osName)
77 .put({}, key1);
78 request.onerror = errorHandler;
79 request.onsuccess = function(event) {
80 is(event.target.transaction.mode, "readwrite", "Correct mode");
81 testGenerator.next();
82 }
83 yield undefined;
85 request = db.transaction(osName, "readwrite")
86 .objectStore(osName)
87 .put({}, key1);
88 request.onerror = errorHandler;
89 request.onsuccess = function(event) {
90 is(event.target.transaction.mode, "readwrite", "Correct mode");
91 testGenerator.next();
92 }
93 yield undefined;
95 request = db.transaction([osName], "readwrite")
96 .objectStore(osName)
97 .delete(key1);
98 request.onerror = errorHandler;
99 request.onsuccess = function(event) {
100 is(event.target.transaction.mode, "readwrite", "Correct mode");
101 testGenerator.next();
102 }
103 yield undefined;
105 request = db.transaction(osName, "readwrite")
106 .objectStore(osName)
107 .delete(key2);
108 request.onerror = errorHandler;
109 request.onsuccess = function(event) {
110 is(event.target.transaction.mode, "readwrite", "Correct mode");
111 testGenerator.next();
112 }
113 yield undefined;
115 try {
116 request = db.transaction([osName]).objectStore(osName).add({});
117 ok(false, "Adding to a readonly transaction should fail!");
118 }
119 catch (e) {
120 ok(true, "Adding to a readonly transaction failed");
121 }
123 try {
124 request = db.transaction(osName).objectStore(osName).add({});
125 ok(false, "Adding to a readonly transaction should fail!");
126 }
127 catch (e) {
128 ok(true, "Adding to a readonly transaction failed");
129 }
131 try {
132 request = db.transaction([osName]).objectStore(osName).put({});
133 ok(false, "Adding or modifying a readonly transaction should fail!");
134 }
135 catch (e) {
136 ok(true, "Adding or modifying a readonly transaction failed");
137 }
139 try {
140 request = db.transaction(osName).objectStore(osName).put({});
141 ok(false, "Adding or modifying a readonly transaction should fail!");
142 }
143 catch (e) {
144 ok(true, "Adding or modifying a readonly transaction failed");
145 }
147 try {
148 request = db.transaction([osName]).objectStore(osName).put({}, key1);
149 ok(false, "Modifying a readonly transaction should fail!");
150 }
151 catch (e) {
152 ok(true, "Modifying a readonly transaction failed");
153 }
155 try {
156 request = db.transaction(osName).objectStore(osName).put({}, key1);
157 ok(false, "Modifying a readonly transaction should fail!");
158 }
159 catch (e) {
160 ok(true, "Modifying a readonly transaction failed");
161 }
163 try {
164 request = db.transaction([osName]).objectStore(osName).delete(key1);
165 ok(false, "Removing from a readonly transaction should fail!");
166 }
167 catch (e) {
168 ok(true, "Removing from a readonly transaction failed");
169 }
171 try {
172 request = db.transaction(osName).objectStore(osName).delete(key2);
173 ok(false, "Removing from a readonly transaction should fail!");
174 }
175 catch (e) {
176 ok(true, "Removing from a readonly transaction failed");
177 }
179 finishTest();
180 yield undefined;
181 }