tor-browser

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

test_objectStore_getAllKeys.js (3639B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 /* exported testGenerator */
      7 var testGenerator = testSteps();
      8 
      9 function* testSteps() {
     10  const dbName = this.window
     11    ? window.location.pathname
     12    : "test_objectStore_getAllKeys";
     13  const dbVersion = 1;
     14  const objectStoreName = "foo";
     15  const keyCount = 200;
     16 
     17  let request = indexedDB.open(dbName, dbVersion);
     18  request.onerror = errorHandler;
     19  request.onupgradeneeded = grabEventAndContinueHandler;
     20  request.onsuccess = unexpectedSuccessHandler;
     21 
     22  let event = yield undefined;
     23 
     24  info("Creating database");
     25 
     26  let db = event.target.result;
     27  let objectStore = db.createObjectStore(objectStoreName);
     28  for (let i = 0; i < keyCount; i++) {
     29    objectStore.add(true, i);
     30  }
     31 
     32  request.onupgradeneeded = unexpectedSuccessHandler;
     33  request.onsuccess = grabEventAndContinueHandler;
     34 
     35  event = yield undefined;
     36 
     37  db = event.target.result;
     38  objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
     39 
     40  info("Getting all keys");
     41  objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
     42  event = yield undefined;
     43 
     44  ok(Array.isArray(event.target.result), "Got an array result");
     45  is(event.target.result.length, keyCount, "Got correct array length");
     46 
     47  let match = true;
     48  for (let i = 0; i < keyCount; i++) {
     49    if (event.target.result[i] != i) {
     50      match = false;
     51      break;
     52    }
     53  }
     54  ok(match, "Got correct keys");
     55 
     56  info("Getting all keys with key range");
     57  let keyRange = IDBKeyRange.bound(10, 20, false, true);
     58  objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
     59  event = yield undefined;
     60 
     61  ok(Array.isArray(event.target.result), "Got an array result");
     62  is(event.target.result.length, 10, "Got correct array length");
     63 
     64  match = true;
     65  for (let i = 10; i < 20; i++) {
     66    if (event.target.result[i - 10] != i) {
     67      match = false;
     68      break;
     69    }
     70  }
     71  ok(match, "Got correct keys");
     72 
     73  info("Getting all keys with unmatched key range");
     74  keyRange = IDBKeyRange.bound(10000, 200000);
     75  objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
     76  event = yield undefined;
     77 
     78  ok(Array.isArray(event.target.result), "Got an array result");
     79  is(event.target.result.length, 0, "Got correct array length");
     80 
     81  info("Getting all keys with limit");
     82  objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
     83  event = yield undefined;
     84 
     85  ok(Array.isArray(event.target.result), "Got an array result");
     86  is(event.target.result.length, 5, "Got correct array length");
     87 
     88  match = true;
     89  for (let i = 0; i < 5; i++) {
     90    if (event.target.result[i] != i) {
     91      match = false;
     92      break;
     93    }
     94  }
     95  ok(match, "Got correct keys");
     96 
     97  info("Getting all keys with key range and limit");
     98  keyRange = IDBKeyRange.bound(10, 20, false, true);
     99  objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
    100  event = yield undefined;
    101 
    102  ok(Array.isArray(event.target.result), "Got an array result");
    103  is(event.target.result.length, 5, "Got correct array length");
    104 
    105  match = true;
    106  for (let i = 10; i < 15; i++) {
    107    if (event.target.result[i - 10] != i) {
    108      match = false;
    109      break;
    110    }
    111  }
    112  ok(match, "Got correct keys");
    113 
    114  info("Getting all keys with unmatched key range and limit");
    115  keyRange = IDBKeyRange.bound(10000, 200000);
    116  objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
    117  event = yield undefined;
    118 
    119  ok(Array.isArray(event.target.result), "Got an array result");
    120  is(event.target.result.length, 0, "Got correct array length");
    121 
    122  finishTest();
    123 }