Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbindex_getAllKeys.html

Issue 1984023002: Move web-platform-tests to wpt (part 1 of 2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>IndexedDB: Test IDBIndex.getAllKeys.</title>
3 <script src="../../../resources/testharness.js"></script>
4 <script src="../../../resources/testharnessreport.js"></script>
5 <script>
6 setup({explicit_done: true});
7
8 var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
9
10 function doSetup(dbName, dbVersion, onsuccess) {
11 var delete_request = indexedDB.deleteDatabase(dbName);
12 delete_request.onerror = function() {
13 assert_unreached('deleteDatabase should not fail');
14 };
15 delete_request.onsuccess = function(e) {
16 var req = indexedDB.open(dbName, dbVersion);
17 req.onsuccess = onsuccess;
18 req.onerror = function() {
19 assert_unreached('open should not fail');
20 };
21 req.onupgradeneeded = function(evt) {
22 var connection = evt.target.result;
23
24 var store = connection.createObjectStore('generated',
25 {autoIncrement: true, keyPath: 'id'});
26 var index = store.createIndex('test_idx', 'upper');
27 alphabet.forEach(function(letter) {
28 store.put({ch: letter, upper: letter.toUpperCase()});
29 });
30
31 store = connection.createObjectStore('out-of-line', null);
32 index = store.createIndex('test_idx', 'upper');
33 alphabet.forEach(function(letter) {
34 store.put({ch: letter, upper: letter.toUpperCase()}, letter);
35 });
36
37 store = connection.createObjectStore('out-of-line-multi', null);
38 index = store.createIndex('test_idx', 'attribs', {multiEntry: true});
39 alphabet.forEach(function(letter) {
40 attrs = [];
41 if (['a', 'e', 'i', 'o', 'u'].indexOf(letter) != -1)
42 attrs.push('vowel');
43 else
44 attrs.push('consonant');
45 if (letter == 'a')
46 attrs.push('first');
47 if (letter == 'z')
48 attrs.push('last');
49 store.put({ch: letter, attribs: attrs}, letter.toUpperCase());
50 });
51
52 store = connection.createObjectStore('empty', null);
53 index = store.createIndex('test_idx', 'upper');
54 };
55 };
56 }
57
58 function createGetAllKeysRequest(t, storeName, connection, range, maxCount) {
59 var transaction = connection.transaction(storeName, 'readonly');
60 var store = transaction.objectStore(storeName);
61 var index = store.index('test_idx');
62 var req = index.getAllKeys(range, maxCount);
63 req.onerror = t.unreached_func('getAllKeys request should succeed');
64 return req;
65 }
66
67 doSetup(location.pathname + '-IDBIndex.getAllKeys', 1, function(evt) {
68 var connection = evt.target.result;
69 async_test(function(t) {
70 var req = createGetAllKeysRequest(t, 'out-of-line', connection, 'C');
71 req.onsuccess = t.step_func(function(evt) {
72 var data = evt.target.result;
73 assert_array_equals(evt.target.result, ['c']);
74 t.done();
75 });
76 }, 'Single item get');
77
78 async_test(function(t) {
79 var req = createGetAllKeysRequest(t, 'empty', connection);
80 req.onsuccess = t.step_func(function(evt) {
81 assert_array_equals(evt.target.result, [],
82 'getAllKeys() on empty object store should return empty array');
83 t.done();
84 });
85 }, 'Empty object store');
86
87 async_test(function(t) {
88 var req = createGetAllKeysRequest(t, 'out-of-line', connection);
89 req.onsuccess = t.step_func(function(evt) {
90 assert_array_equals(evt.target.result, alphabet,
91 'getAllKeys() should return a..z');
92 t.done();
93 });
94 }, 'Get all keys');
95
96 async_test(function(t) {
97 var req = createGetAllKeysRequest(t, 'generated', connection);
98 req.onsuccess = t.step_func(function(evt) {
99 assert_array_equals(evt.target.result,
100 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
101 19, 20, 21, 22, 23, 24, 25, 26],
102 'getAllKeys() should return 1..26');
103 t.done();
104 });
105 }, 'Get all generated keys');
106
107 async_test(function(t) {
108 var req = createGetAllKeysRequest(t, 'out-of-line', connection, undefined,
109 10);
110 req.onsuccess = t.step_func(function(evt) {
111 assert_array_equals(evt.target.result,
112 'abcdefghij'.split(''),
113 'getAllKeys() should return a..j');
114 t.done();
115 });
116 }, 'maxCount=10');
117
118 async_test(function(t) {
119 var req = createGetAllKeysRequest(t, 'out-of-line', connection,
120 IDBKeyRange.bound('G', 'M'));
121 req.onsuccess = t.step_func(function(evt) {
122 assert_array_equals(evt.target.result,
123 'ghijklm'.split(''),
124 'getAllKeys() should return g..m');
125 t.done();
126 });
127 }, 'Get bound range');
128
129 async_test(function(t) {
130 var req = createGetAllKeysRequest(t, 'out-of-line', connection,
131 IDBKeyRange.bound('G', 'M'), 3);
132 req.onsuccess = t.step_func(function(evt) {
133 assert_array_equals(evt.target.result,
134 ['g', 'h', 'i'],
135 'getAllKeys() should return g..i');
136 t.done();
137 });
138 }, 'Get bound range with maxCount');
139
140 async_test(function(t) {
141 var req = createGetAllKeysRequest(t, 'out-of-line', connection,
142 IDBKeyRange.bound('G', 'K', false, true));
143 req.onsuccess = t.step_func(function(evt) {
144 assert_array_equals(evt.target.result,
145 ['g', 'h', 'i', 'j'],
146 'getAllKeys() should return g..j');
147 t.done();
148 });
149 }, 'Get upper excluded');
150
151 async_test(function(t) {
152 var req = createGetAllKeysRequest(t, 'out-of-line', connection,
153 IDBKeyRange.bound('G', 'K', true, false));
154 req.onsuccess = t.step_func(function(evt) {
155 assert_array_equals(evt.target.result,
156 ['h', 'i', 'j', 'k'],
157 'getAllKeys() should return h..k');
158 t.done();
159 });
160 }, 'Get lower excluded');
161
162 async_test(function(t) {
163 var req = createGetAllKeysRequest(t, 'generated',
164 connection, IDBKeyRange.bound(4, 15), 3);
165 req.onsuccess = t.step_func(function(evt) {
166 assert_array_equals(evt.target.result, [],
167 'getAllKeys() should return []');
168 t.done();
169 });
170 }, 'Get bound range (generated) with maxCount');
171
172 async_test(function(t) {
173 var req = createGetAllKeysRequest(t, 'out-of-line',
174 connection, "Doesn't exist");
175 req.onsuccess = t.step_func(function(evt) {
176 assert_array_equals(evt.target.result, [],
177 'getAllKeys() using a nonexistent key should return empty array');
178 t.done();
179 req.onerror = t.unreached_func('getAllKeys request should succeed');
180 });
181 }, 'Non existent key');
182
183 async_test(function(t) {
184 var req = createGetAllKeysRequest(t, 'out-of-line', connection,
185 undefined, 0);
186 req.onsuccess = t.step_func(function(evt) {
187 assert_array_equals(evt.target.result, alphabet,
188 'getAllKeys() should return a..z');
189 t.done();
190 });
191 }, 'maxCount=0');
192
193 async_test(function(t) {
194 var req = createGetAllKeysRequest(t, 'out-of-line-multi', connection,
195 'vowel');
196 req.onsuccess = t.step_func(function(evt) {
197 assert_array_equals(evt.target.result, ['A','E','I','O','U'])
198 t.done();
199 });
200 req.onerror = t.unreached_func('getAllKeys request should succeed');
201 }, 'Retrieve multiEntry keys');
202
203 // Explicit done needed in case async_test body fails synchronously.
204 done();
205 });
206
207 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698