tor-browser

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

key_valid.any.js (1815B)


      1 // META: global=window,worker
      2 // META: title=Valid key
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#key-construct
      6 
      7 'use strict';
      8 
      9 const valid_key = (desc, key) => {
     10  async_test(t => {
     11    let db;
     12    const open_rq = createdb(t);
     13    open_rq.onupgradeneeded = t.step_func(e => {
     14      db = e.target.result;
     15      const store = db.createObjectStore('store');
     16      assert_true(store.add('value', key) instanceof IDBRequest);
     17 
     18      const store2 = db.createObjectStore('store2', {
     19        keyPath: ['x', 'keypath'],
     20      });
     21      assert_true(store2.add({x: 'v', keypath: key}) instanceof IDBRequest);
     22    });
     23 
     24    open_rq.onsuccess = t.step_func(e => {
     25      const rq =
     26          db.transaction('store', 'readonly').objectStore('store').get(key);
     27      rq.onsuccess = t.step_func(e => {
     28        assert_equals(e.target.result, 'value');
     29        const rq2 =
     30            db.transaction('store2', 'readonly').objectStore('store2').get([
     31              'v', key
     32            ]);
     33        rq2.onsuccess = t.step_func(e => {
     34          assert_equals(e.target.result.x, 'v');
     35          assert_key_equals(e.target.result.keypath, key);
     36          t.done();
     37        });
     38      });
     39    });
     40  }, 'Valid key - ' + desc);
     41 };
     42 
     43 // Date
     44 valid_key('new Date()', new Date());
     45 valid_key('new Date(0)', new Date(0));
     46 
     47 // Array
     48 valid_key('[]', []);
     49 valid_key('new Array()', new Array());
     50 
     51 valid_key('["undefined"]', ['undefined']);
     52 
     53 // Float
     54 valid_key('Infinity', Infinity);
     55 valid_key('-Infinity', -Infinity);
     56 valid_key('0', 0);
     57 valid_key('1.5', 1.5);
     58 valid_key('3e38', 3e38);
     59 valid_key('3e-38', 3e38);
     60 
     61 // String
     62 valid_key('"foo"', 'foo');
     63 valid_key('"\\n"', '\n');
     64 valid_key('""', '');
     65 valid_key('"\\""', '"');
     66 valid_key('"\\u1234"', '\u1234');
     67 valid_key('"\\u0000"', '\u0000');
     68 valid_key('"NaN"', 'NaN');