| // META: title=ObjectStoreNames and indexNames ordering |
| // META: global=window,worker |
| // META: script=resources/support.js |
| |
| // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-objectstorenames |
| |
| 'use strict'; |
| |
| function list_order(desc, unsorted, expected) { |
| let objStore; |
| let db; |
| let t = async_test( |
| 'Validate ObjectStoreNames and indexNames list order - ' + desc); |
| const open_rq = createdb(t); |
| open_rq.onupgradeneeded = t.step_func((e) => { |
| db = e.target.result; |
| for (let i = 0; i < unsorted.length; i++) |
| objStore = db.createObjectStore(unsorted[i]); |
| |
| assert_equals( |
| db.objectStoreNames.length, expected.length, 'objectStoreNames length'); |
| for (let i = 0; i < expected.length; i++) |
| assert_equals( |
| db.objectStoreNames[i], expected[i], 'objectStoreNames[' + i + ']'); |
| |
| for (let i = 0; i < unsorted.length; i++) |
| objStore.createIndex(unsorted[i], 'length'); |
| |
| assert_equals( |
| objStore.indexNames.length, expected.length, 'indexNames length'); |
| for (let i = 0; i < expected.length; i++) |
| assert_equals( |
| objStore.indexNames[i], expected[i], 'indexNames[' + i + ']'); |
| }); |
| |
| open_rq.onsuccess = t.step_func((e) => { |
| assert_equals( |
| db.objectStoreNames.length, expected.length, 'objectStoreNames length'); |
| for (let i = 0; i < expected.length; i++) |
| assert_equals( |
| db.objectStoreNames[i], expected[i], 'objectStoreNames[' + i + ']'); |
| |
| assert_equals( |
| objStore.indexNames.length, expected.length, 'indexNames length'); |
| for (let i = 0; i < expected.length; i++) |
| assert_equals( |
| objStore.indexNames[i], expected[i], 'indexNames[' + i + ']'); |
| |
| t.done(); |
| }); |
| } |
| |
| list_order( |
| 'numbers', [123456, -12345, -123, 123, 1234, -1234, 0, 12345, -123456], [ |
| '-123', '-1234', '-12345', '-123456', '0', '123', '1234', '12345', |
| '123456' |
| ]); |
| |
| list_order( |
| 'numbers \'overflow\'', [9, 1, 1000000000, 200000000000000000], |
| ['1', '1000000000', '200000000000000000', '9']); |
| |
| list_order( |
| 'lexigraphical string sort', |
| ['cc', 'c', 'aa', 'a', 'bb', 'b', 'ab', '', 'ac'], |
| ['', 'a', 'aa', 'ab', 'ac', 'b', 'bb', 'c', 'cc']); |