list_ordering.any.js (2199B)
1 // META: title=ObjectStoreNames and indexNames ordering 2 // META: global=window,worker 3 // META: script=resources/support.js 4 5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-objectstorenames 6 7 'use strict'; 8 9 function list_order(desc, unsorted, expected) { 10 let objStore; 11 let db; 12 let t = async_test( 13 'Validate ObjectStoreNames and indexNames list order - ' + desc); 14 const open_rq = createdb(t); 15 open_rq.onupgradeneeded = t.step_func((e) => { 16 db = e.target.result; 17 for (let i = 0; i < unsorted.length; i++) 18 objStore = db.createObjectStore(unsorted[i]); 19 20 assert_equals( 21 db.objectStoreNames.length, expected.length, 'objectStoreNames length'); 22 for (let i = 0; i < expected.length; i++) 23 assert_equals( 24 db.objectStoreNames[i], expected[i], 'objectStoreNames[' + i + ']'); 25 26 for (let i = 0; i < unsorted.length; i++) 27 objStore.createIndex(unsorted[i], 'length'); 28 29 assert_equals( 30 objStore.indexNames.length, expected.length, 'indexNames length'); 31 for (let i = 0; i < expected.length; i++) 32 assert_equals( 33 objStore.indexNames[i], expected[i], 'indexNames[' + i + ']'); 34 }); 35 36 open_rq.onsuccess = t.step_func((e) => { 37 assert_equals( 38 db.objectStoreNames.length, expected.length, 'objectStoreNames length'); 39 for (let i = 0; i < expected.length; i++) 40 assert_equals( 41 db.objectStoreNames[i], expected[i], 'objectStoreNames[' + i + ']'); 42 43 assert_equals( 44 objStore.indexNames.length, expected.length, 'indexNames length'); 45 for (let i = 0; i < expected.length; i++) 46 assert_equals( 47 objStore.indexNames[i], expected[i], 'indexNames[' + i + ']'); 48 49 t.done(); 50 }); 51 } 52 53 list_order( 54 'numbers', [123456, -12345, -123, 123, 1234, -1234, 0, 12345, -123456], [ 55 '-123', '-1234', '-12345', '-123456', '0', '123', '1234', '12345', 56 '123456' 57 ]); 58 59 list_order( 60 'numbers \'overflow\'', [9, 1, 1000000000, 200000000000000000], 61 ['1', '1000000000', '200000000000000000', '9']); 62 63 list_order( 64 'lexigraphical string sort', 65 ['cc', 'c', 'aa', 'a', 'bb', 'b', 'ab', '', 'ac'], 66 ['', 'a', 'aa', 'ab', 'ac', 'b', 'bb', 'c', 'cc']);