| // META: title=IDBObjectStore key sort order |
| // META: global=window,worker |
| // META: script=resources/support.js |
| |
| 'use strict'; |
| |
| async_test(t => { |
| let db; |
| const d = new Date(); |
| const records = [{key: d}, {key: 'test'}, {key: 1}, {key: 2.55}]; |
| const expectedKeyOrder = [1, 2.55, d.valueOf(), 'test']; |
| |
| const open_rq = createdb(t); |
| open_rq.onupgradeneeded = t.step_func((e) => { |
| db = e.target.result; |
| const objStore = db.createObjectStore('store', {keyPath: 'key'}); |
| |
| for (let i = 0; i < records.length; i++) |
| objStore.add(records[i]); |
| }); |
| |
| open_rq.onsuccess = t.step_func((e) => { |
| let actual_keys = []; |
| const rq = |
| db.transaction('store', 'readonly').objectStore('store').openCursor(); |
| |
| rq.onsuccess = t.step_func((e) => { |
| const cursor = e.target.result; |
| |
| if (cursor) { |
| actual_keys.push(cursor.key.valueOf()); |
| cursor.continue(); |
| } else { |
| assert_array_equals(actual_keys, expectedKeyOrder); |
| t.done(); |
| } |
| }); |
| }); |
| }, 'Verify key sort order in an object store is \'number < Date < DOMString\' '); |