tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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']);