OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <title>IDBCursor.continue()</title> | |
3 <link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal"> | |
4 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#
widl-IDBCursor-continue-void-any-key"> | |
5 <link rel=assert title="The next key to position this cursor at"> | |
6 <script src="../../../resources/testharness.js"></script> | |
7 <script src="../../../resources/testharnessreport.js"></script> | |
8 <script src="support.js"></script> | |
9 | |
10 <script> | |
11 | |
12 var db, open; | |
13 var store = [ { value: "cupcake", key: 5 }, | |
14 { value: "pancake", key: 3 }, | |
15 { value: "pie", key: 1 }, | |
16 { value: "pie", key: 4 }, | |
17 { value: "taco", key: 2 } ]; | |
18 | |
19 setup(function() { | |
20 open = indexedDB.open('testdb-' + new Date().getTime()); | |
21 open.onupgradeneeded = function(e) { | |
22 var os, i; | |
23 db = e.target.result; | |
24 os = db.createObjectStore("test"); | |
25 os.createIndex("index", ""); | |
26 | |
27 for (i = 0; i < store.length; i++) | |
28 os.add(store[i].value, store[i].key); | |
29 }; | |
30 }, | |
31 { explicit_done: true }); | |
32 | |
33 | |
34 open.onsuccess = function() { | |
35 | |
36 | |
37 async_test(document.title + " - continues").step(function(e) { | |
38 var count = 0; | |
39 var rq = db.transaction("test").objectStore("test").index("index").o
penCursor(); | |
40 | |
41 rq.onsuccess = this.step_func(function(e) { | |
42 if (!e.target.result) { | |
43 assert_equals(count, 5, 'count'); | |
44 this.done(); | |
45 return; | |
46 } | |
47 var cursor = e.target.result; | |
48 | |
49 assert_equals(cursor.value, store[count].value); | |
50 assert_equals(cursor.primaryKey, store[count].key); | |
51 | |
52 cursor.continue(); | |
53 | |
54 count++; | |
55 }); | |
56 rq.onerror = fail(this, "unexpected error") | |
57 }); | |
58 | |
59 | |
60 async_test(document.title + " - with given key").step(function(e) { | |
61 var count = 0; | |
62 var rq = db.transaction("test").objectStore("test").index("index").o
penCursor(); | |
63 | |
64 rq.onsuccess = this.step_func(function(e) { | |
65 if (!e.target.result) { | |
66 assert_equals(count, 3, 'count'); | |
67 this.done(); | |
68 return; | |
69 } | |
70 var cursor = e.target.result; | |
71 | |
72 switch(count) { | |
73 case 0: | |
74 assert_equals(cursor.value, "cupcake"); | |
75 assert_equals(cursor.primaryKey, 5); | |
76 cursor.continue("pie"); | |
77 break; | |
78 | |
79 case 1: | |
80 assert_equals(cursor.value, "pie"); | |
81 assert_equals(cursor.primaryKey, 1); | |
82 cursor.continue("taco"); | |
83 break; | |
84 | |
85 case 2: | |
86 assert_equals(cursor.value, "taco"); | |
87 assert_equals(cursor.primaryKey, 2); | |
88 cursor.continue(); | |
89 break; | |
90 | |
91 default: | |
92 assert_unreached("Unexpected count: " + count); | |
93 } | |
94 | |
95 count++; | |
96 }); | |
97 rq.onerror = fail(this, "unexpected error") | |
98 }); | |
99 | |
100 | |
101 async_test(document.title + " - skip far forward").step(function(e) { | |
102 var count = 0; | |
103 var rq = db.transaction("test").objectStore("test").index("index") | |
104 .openCursor(); | |
105 | |
106 rq.onsuccess = this.step_func(function(e) { | |
107 if (!e.target.result) { | |
108 assert_equals(count, 1, 'count'); | |
109 this.done(); | |
110 return; | |
111 } | |
112 var cursor = e.target.result; | |
113 | |
114 switch(count) { | |
115 case 0: | |
116 assert_equals(cursor.value, "cupcake"); | |
117 assert_equals(cursor.primaryKey, 5); | |
118 break; | |
119 | |
120 default: | |
121 assert_unreached("Unexpected count: " + count); | |
122 } | |
123 | |
124 count++; | |
125 cursor.continue([]); // Arrays are always bigger than strings | |
126 | |
127 }); | |
128 rq.onerror = fail(this, "unexpected error2") | |
129 }); | |
130 | |
131 | |
132 async_test(document.title + " - within range").step(function(e) { | |
133 var count = 0; | |
134 var rq = db.transaction("test").objectStore("test").index("index") | |
135 .openCursor(IDBKeyRange.lowerBound("cupcake", true)); | |
136 | |
137 rq.onsuccess = this.step_func(function(e) { | |
138 if (!e.target.result) { | |
139 assert_equals(count, 2, 'count'); | |
140 this.done(); | |
141 return; | |
142 } | |
143 var cursor = e.target.result; | |
144 | |
145 switch(count) { | |
146 case 0: | |
147 assert_equals(cursor.value, "pancake"); | |
148 assert_equals(cursor.primaryKey, 3); | |
149 cursor.continue("pie"); | |
150 break; | |
151 | |
152 case 1: | |
153 assert_equals(cursor.value, "pie"); | |
154 assert_equals(cursor.primaryKey, 1); | |
155 cursor.continue("zzz"); | |
156 break; | |
157 | |
158 default: | |
159 assert_unreached("Unexpected count: " + count); | |
160 } | |
161 | |
162 count++; | |
163 }); | |
164 rq.onerror = fail(this, "unexpected error1") | |
165 }); | |
166 | |
167 | |
168 async_test(document.title + " - within single key range").step(function(
e) { | |
169 var count = 0; | |
170 var rq = db.transaction("test").objectStore("test").index("index") | |
171 .openCursor("pancake"); | |
172 | |
173 rq.onsuccess = this.step_func(function(e) { | |
174 if (!e.target.result) { | |
175 assert_equals(count, 1, 'count'); | |
176 this.done(); | |
177 return; | |
178 } | |
179 var cursor = e.target.result; | |
180 | |
181 switch(count) { | |
182 case 0: | |
183 assert_equals(cursor.value, "pancake"); | |
184 assert_equals(cursor.primaryKey, 3); | |
185 cursor.continue("pie"); | |
186 break; | |
187 | |
188 default: | |
189 assert_unreached("Unexpected count: " + count); | |
190 } | |
191 | |
192 count++; | |
193 }); | |
194 rq.onerror = fail(this, "unexpected error1") | |
195 }); | |
196 | |
197 | |
198 async_test(document.title + " - within single key range, with several re
sults").step(function(e) { | |
199 var count = 0; | |
200 var rq = db.transaction("test").objectStore("test").index("index") | |
201 .openCursor("pie"); | |
202 | |
203 rq.onsuccess = this.step_func(function(e) { | |
204 if (!e.target.result) { | |
205 assert_equals(count, 2, 'count'); | |
206 this.done(); | |
207 return; | |
208 } | |
209 var cursor = e.target.result; | |
210 | |
211 switch(count) { | |
212 case 0: | |
213 assert_equals(cursor.value, "pie"); | |
214 assert_equals(cursor.primaryKey, 1); | |
215 cursor.continue(); | |
216 break; | |
217 | |
218 case 1: | |
219 assert_equals(cursor.value, "pie"); | |
220 assert_equals(cursor.primaryKey, 4); | |
221 cursor.continue(); | |
222 break; | |
223 | |
224 default: | |
225 assert_unreached("Unexpected count: " + count); | |
226 } | |
227 | |
228 count++; | |
229 }); | |
230 rq.onerror = fail(this, "unexpected error1") | |
231 }); | |
232 | |
233 | |
234 // Stop blocking the testing system from hereon | |
235 done(); | |
236 } | |
237 | |
238 </script> | |
239 | |
240 <div id="log"></div> | |
OLD | NEW |