tor-browser

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

idbcursor-direction-index.any.js (1727B)


      1 // META: global=window,worker
      2 // META: title=IDBCursor direction - index
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#cursor-iteration-operation
      6 
      7 'use strict';
      8 
      9 let records = ['Alice', 'Bob', 'Bob', 'Greg'];
     10 let cases = [
     11  {dir: 'next', expect: ['Alice:0', 'Bob:1', 'Bob:2', 'Greg:3']},
     12  {dir: 'prev', expect: ['Greg:3', 'Bob:2', 'Bob:1', 'Alice:0']},
     13  {dir: 'nextunique', expect: ['Alice:0', 'Bob:1', 'Greg:3']},
     14  {dir: 'prevunique', expect: ['Greg:3', 'Bob:1', 'Alice:0']},
     15 ];
     16 
     17 cases.forEach(function(testcase) {
     18  let dir = testcase.dir;
     19  let expect = testcase.expect;
     20  indexeddb_test(
     21      function(t, db, tx) {
     22        let objStore = db.createObjectStore('test');
     23        objStore.createIndex('idx', 'name');
     24 
     25        for (let i = 0; i < records.length; i++)
     26          objStore.add({name: records[i]}, i);
     27      },
     28      function(t, db) {
     29        let count = 0;
     30        let rq = db.transaction('test', 'readonly')
     31                     .objectStore('test')
     32                     .index('idx')
     33                     .openCursor(undefined, dir);
     34        rq.onsuccess = t.step_func(function(e) {
     35          let cursor = e.target.result;
     36          if (!cursor) {
     37            assert_equals(count, expect.length, 'cursor runs');
     38            t.done();
     39          }
     40          assert_equals(
     41              cursor.value.name + ':' + cursor.primaryKey, expect[count],
     42              'cursor.value');
     43          count++;
     44          cursor.continue();
     45        });
     46        rq.onerror = t.step_func(function(e) {
     47          e.preventDefault();
     48          e.stopPropagation();
     49          assert_unreached('rq.onerror - ' + e.message);
     50        });
     51      },
     52      'IDBCursor direction - index - ' + dir);
     53 });