OLD | NEW |
1 Test IndexedDB's key generator behavior. | 1 Test IndexedDB's key generator behavior. |
2 | 2 |
3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
". | 3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
". |
4 | 4 |
5 | 5 |
6 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
7 | |
8 | 6 |
9 Verify that each object store has an independent key generator. | 7 Verify that each object store has an independent key generator. |
10 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
11 | |
12 dbname = "key-generator.html" | 8 dbname = "key-generator.html" |
13 indexedDB.deleteDatabase(dbname) | 9 indexedDB.deleteDatabase(dbname) |
14 indexedDB.open(dbname) | 10 indexedDB.open(dbname) |
15 store1 = db.createObjectStore('store1', { autoIncrement: true }) | 11 store1 = db.createObjectStore('store1', { autoIncrement: true }) |
16 store1.put('a') | 12 store1.put('a') |
17 request = store.get(1) | 13 request = store.get(1) |
18 store2 = db.createObjectStore('store2', { autoIncrement: true }) | 14 store2 = db.createObjectStore('store2', { autoIncrement: true }) |
19 store2.put('a') | 15 store2.put('a') |
20 request = store.get(1) | 16 request = store.get(1) |
21 store1.put('b') | 17 store1.put('b') |
22 request = store.get(2) | 18 request = store.get(2) |
23 store2.put('b') | 19 store2.put('b') |
24 request = store.get(2) | 20 request = store.get(2) |
25 PASS Got "a" for key: 1 | 21 PASS Got "a" for key: 1 |
26 PASS Got "a" for key: 1 | 22 PASS Got "a" for key: 1 |
27 PASS Got "b" for key: 2 | 23 PASS Got "b" for key: 2 |
28 PASS Got "b" for key: 2 | 24 PASS Got "b" for key: 2 |
29 db.close() | 25 db.close() |
30 | 26 |
31 Verify that the key generator is not updated if insertion fails | 27 Verify that the key generator is not updated if insertion fails |
32 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
33 | |
34 dbname = "key-generator.html" | 28 dbname = "key-generator.html" |
35 indexedDB.deleteDatabase(dbname) | 29 indexedDB.deleteDatabase(dbname) |
36 indexedDB.open(dbname) | 30 indexedDB.open(dbname) |
37 store = db.createObjectStore('store1', { autoIncrement: true }) | 31 store = db.createObjectStore('store1', { autoIncrement: true }) |
38 index = store.createIndex('index1', 'ix', { unique: true }) | 32 index = store.createIndex('index1', 'ix', { unique: true }) |
39 store.put({ ix: 'a'}) | 33 store.put({ ix: 'a'}) |
40 request = store.get(1) | 34 request = store.get(1) |
41 store.put({ ix: 'a'}) | 35 store.put({ ix: 'a'}) |
42 store.put({ ix: 'b'}) | 36 store.put({ ix: 'b'}) |
43 request = store.get(2) | 37 request = store.get(2) |
44 PASS Got {"ix":"a"} for key: 1 | 38 PASS Got {"ix":"a"} for key: 1 |
45 PASS Got {"ix":"b"} for key: 2 | 39 PASS Got {"ix":"b"} for key: 2 |
46 db.close() | 40 db.close() |
47 | 41 |
48 Verify that the key generator is not affected by item removal (delete or clear). | 42 Verify that the key generator is not affected by item removal (delete or clear). |
49 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
50 | |
51 dbname = "key-generator.html" | 43 dbname = "key-generator.html" |
52 indexedDB.deleteDatabase(dbname) | 44 indexedDB.deleteDatabase(dbname) |
53 indexedDB.open(dbname) | 45 indexedDB.open(dbname) |
54 store = db.createObjectStore('store1', { autoIncrement: true }) | 46 store = db.createObjectStore('store1', { autoIncrement: true }) |
55 store.put('a') | 47 store.put('a') |
56 request = store.get(1) | 48 request = store.get(1) |
57 store.delete(1) | 49 store.delete(1) |
58 store.put('b') | 50 store.put('b') |
59 request = store.get(2) | 51 request = store.get(2) |
60 store.clear() | 52 store.clear() |
61 store.put('c') | 53 store.put('c') |
62 request = store.get(3) | 54 request = store.get(3) |
63 store.delete(IDBKeyRange.lowerBound(0)) | 55 store.delete(IDBKeyRange.lowerBound(0)) |
64 store.put('d') | 56 store.put('d') |
65 request = store.get(4) | 57 request = store.get(4) |
66 PASS Got "a" for key: 1 | 58 PASS Got "a" for key: 1 |
67 PASS Got "b" for key: 2 | 59 PASS Got "b" for key: 2 |
68 PASS Got "c" for key: 3 | 60 PASS Got "c" for key: 3 |
69 PASS Got "d" for key: 4 | 61 PASS Got "d" for key: 4 |
70 db.close() | 62 db.close() |
71 | 63 |
72 Verify that the key generator is only set if and only if a numeric key greater t
han the last generated key is used. | 64 Verify that the key generator is only set if and only if a numeric key greater t
han the last generated key is used. |
73 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
74 | |
75 dbname = "key-generator.html" | 65 dbname = "key-generator.html" |
76 indexedDB.deleteDatabase(dbname) | 66 indexedDB.deleteDatabase(dbname) |
77 indexedDB.open(dbname) | 67 indexedDB.open(dbname) |
78 store = db.createObjectStore('store1', { autoIncrement: true }) | 68 store = db.createObjectStore('store1', { autoIncrement: true }) |
79 store.put('a') | 69 store.put('a') |
80 request = store.get(1) | 70 request = store.get(1) |
81 store.put('b', 3) | 71 store.put('b', 3) |
82 request = store.get(3) | 72 request = store.get(3) |
83 store.put('c') | 73 store.put('c') |
84 request = store.get(4) | 74 request = store.get(4) |
(...skipping 26 matching lines...) Expand all Loading... |
111 PASS Got "g" for key: 7 | 101 PASS Got "g" for key: 7 |
112 PASS Got "f" for key: 8.9999 | 102 PASS Got "f" for key: 8.9999 |
113 PASS Got "g" for key: 9 | 103 PASS Got "g" for key: 9 |
114 PASS Got "h" for key: "foo" | 104 PASS Got "h" for key: "foo" |
115 PASS Got "i" for key: 10 | 105 PASS Got "i" for key: 10 |
116 PASS Got "j" for key: [1000] | 106 PASS Got "j" for key: [1000] |
117 PASS Got "k" for key: 11 | 107 PASS Got "k" for key: 11 |
118 db.close() | 108 db.close() |
119 | 109 |
120 Verify that aborting a transaction resets the key generator state. | 110 Verify that aborting a transaction resets the key generator state. |
121 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
122 | |
123 dbname = "key-generator.html" | 111 dbname = "key-generator.html" |
124 indexedDB.deleteDatabase(dbname) | 112 indexedDB.deleteDatabase(dbname) |
125 indexedDB.open(dbname) | 113 indexedDB.open(dbname) |
126 trans1 = db.transaction(['store'], 'readwrite') | 114 trans1 = db.transaction(['store'], 'readwrite') |
127 store_t1 = trans1.objectStore('store') | 115 store_t1 = trans1.objectStore('store') |
128 store_t1.put('a') | 116 store_t1.put('a') |
129 request = store.get(1) | 117 request = store.get(1) |
130 store_t1.put('b') | 118 store_t1.put('b') |
131 request = store.get(2) | 119 request = store.get(2) |
132 PASS Got "a" for key: 1 | 120 PASS Got "a" for key: 1 |
133 PASS Got "b" for key: 2 | 121 PASS Got "b" for key: 2 |
134 aborting... | 122 aborting... |
135 trans1.abort() | 123 trans1.abort() |
136 aborted! | 124 aborted! |
137 trans2 = db.transaction(['store'], 'readwrite') | 125 trans2 = db.transaction(['store'], 'readwrite') |
138 store_t2 = trans2.objectStore('store') | 126 store_t2 = trans2.objectStore('store') |
139 store_t2.put('c') | 127 store_t2.put('c') |
140 request = store.get(1) | 128 request = store.get(1) |
141 store_t2.put('d') | 129 store_t2.put('d') |
142 request = store.get(2) | 130 request = store.get(2) |
143 PASS Got "c" for key: 1 | 131 PASS Got "c" for key: 1 |
144 PASS Got "d" for key: 2 | 132 PASS Got "d" for key: 2 |
145 db.close() | 133 db.close() |
146 | 134 |
147 Verify that keys above 2^53 result in errors. | 135 Verify that keys above 2^53 result in errors. |
148 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
149 | |
150 dbname = "key-generator.html" | 136 dbname = "key-generator.html" |
151 indexedDB.deleteDatabase(dbname) | 137 indexedDB.deleteDatabase(dbname) |
152 indexedDB.open(dbname) | 138 indexedDB.open(dbname) |
153 trans1 = db.transaction(['store'], 'readwrite') | 139 trans1 = db.transaction(['store'], 'readwrite') |
154 store_t1 = trans1.objectStore('store') | 140 store_t1 = trans1.objectStore('store') |
155 store_t1.put('a') | 141 store_t1.put('a') |
156 request = store.get(1) | 142 request = store.get(1) |
157 store_t1.put('b', 9007199254740992) | 143 store_t1.put('b', 9007199254740992) |
158 request = store.get(9007199254740992) | 144 request = store.get(9007199254740992) |
159 store_t1.put('c') | 145 store_t1.put('c') |
160 store_t1.put('d', 2) | 146 store_t1.put('d', 2) |
161 request = store.get(2) | 147 request = store.get(2) |
162 PASS Got "a" for key: 1 | 148 PASS Got "a" for key: 1 |
163 PASS Got "b" for key: 9007199254740992 | 149 PASS Got "b" for key: 9007199254740992 |
164 Error event fired auto-incrementing past 2^53 (as expected) | 150 Error event fired auto-incrementing past 2^53 (as expected) |
165 PASS event.target.error.name is 'ConstraintError' | 151 PASS event.target.error.name is 'ConstraintError' |
166 event.preventDefault() | 152 event.preventDefault() |
167 PASS Got "d" for key: 2 | 153 PASS Got "d" for key: 2 |
168 db.close() | 154 db.close() |
169 | 155 |
170 Ensure key generator state is maintained across connections: | 156 Ensure key generator state is maintained across connections: |
171 indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.
msIndexedDB || self.OIndexedDB; | |
172 | |
173 dbname = "key-generator.html" | 157 dbname = "key-generator.html" |
174 indexedDB.deleteDatabase(dbname) | 158 indexedDB.deleteDatabase(dbname) |
175 indexedDB.open(dbname) | 159 indexedDB.open(dbname) |
176 db.createObjectStore('store', {autoIncrement: true}) | 160 db.createObjectStore('store', {autoIncrement: true}) |
177 | 161 |
178 trans = db.transaction('store', 'readwrite') | 162 trans = db.transaction('store', 'readwrite') |
179 request = trans.objectStore('store').put('value1') | 163 request = trans.objectStore('store').put('value1') |
180 PASS request.result is 1 | 164 PASS request.result is 1 |
181 trans.objectStore('store').clear() | 165 trans.objectStore('store').clear() |
182 db.close() | 166 db.close() |
183 | 167 |
184 request = indexedDB.open(dbname) | 168 request = indexedDB.open(dbname) |
185 db = request.result | 169 db = request.result |
186 trans = db.transaction('store', 'readwrite') | 170 trans = db.transaction('store', 'readwrite') |
187 request = trans.objectStore('store').put('value2') | 171 request = trans.objectStore('store').put('value2') |
188 PASS request.result is 2 | 172 PASS request.result is 2 |
189 | 173 |
190 PASS successfullyParsed is true | 174 PASS successfullyParsed is true |
191 | 175 |
192 TEST COMPLETE | 176 TEST COMPLETE |
193 | 177 |
OLD | NEW |