tor-browser

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

test_index_getAll.js (5962B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 var testGenerator = testSteps();
      7 
      8 function* testSteps() {
      9  const name = this.window ? window.location.pathname : "Splendid Test";
     10  const objectStoreName = "People";
     11 
     12  const objectStoreData = [
     13    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
     14    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
     15    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
     16    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
     17    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
     18    { key: "237-23-7737", value: { name: "Pat", height: 65 } },
     19  ];
     20 
     21  const indexData = [
     22    { name: "name", keyPath: "name", options: { unique: true } },
     23    { name: "height", keyPath: "height", options: { unique: false } },
     24    { name: "weight", keyPath: "weight", options: { unique: false } },
     25  ];
     26 
     27  const objectStoreDataHeightSort = [
     28    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
     29    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
     30    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
     31    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
     32    { key: "237-23-7737", value: { name: "Pat", height: 65 } },
     33    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
     34  ];
     35 
     36  let request = indexedDB.open(name, 1);
     37  request.onerror = errorHandler;
     38  request.onupgradeneeded = grabEventAndContinueHandler;
     39  request.onsuccess = grabEventAndContinueHandler;
     40  let event = yield undefined;
     41 
     42  let db = event.target.result;
     43 
     44  let objectStore = db.createObjectStore(objectStoreName);
     45 
     46  // First, add all our data to the object store.
     47  let addedData = 0;
     48  for (let i in objectStoreData) {
     49    request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
     50    request.onerror = errorHandler;
     51    request.onsuccess = function (event) {
     52      if (++addedData == objectStoreData.length) {
     53        testGenerator.next(event);
     54      }
     55    };
     56  }
     57  yield undefined;
     58  ok(true, "1");
     59 
     60  // Now create the indexes.
     61  for (let i in indexData) {
     62    objectStore.createIndex(
     63      indexData[i].name,
     64      indexData[i].keyPath,
     65      indexData[i].options
     66    );
     67  }
     68 
     69  is(objectStore.indexNames.length, indexData.length, "Good index count");
     70  yield undefined;
     71 
     72  ok(true, "2");
     73  objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
     74 
     75  request = objectStore.index("height").mozGetAllKeys(65);
     76  request.onerror = errorHandler;
     77  request.onsuccess = grabEventAndContinueHandler;
     78  event = yield undefined;
     79  ok(true, "3");
     80 
     81  is(event.target.result instanceof Array, true, "Got an array object");
     82  is(event.target.result.length, 2, "Correct length");
     83 
     84  for (let i in event.target.result) {
     85    is(
     86      event.target.result[i],
     87      objectStoreDataHeightSort[parseInt(i) + 3].key,
     88      "Correct key"
     89    );
     90  }
     91 
     92  request = objectStore.index("height").mozGetAllKeys(65, 0);
     93  request.onerror = errorHandler;
     94  request.onsuccess = grabEventAndContinueHandler;
     95  event = yield undefined;
     96  ok(true, "3");
     97 
     98  is(event.target.result instanceof Array, true, "Got an array object");
     99  is(event.target.result.length, 2, "Correct length");
    100 
    101  for (let i in event.target.result) {
    102    is(
    103      event.target.result[i],
    104      objectStoreDataHeightSort[parseInt(i) + 3].key,
    105      "Correct key"
    106    );
    107  }
    108 
    109  request = objectStore.index("height").mozGetAllKeys(65, null);
    110  request.onerror = errorHandler;
    111  request.onsuccess = grabEventAndContinueHandler;
    112  event = yield undefined;
    113  ok(true, "3");
    114 
    115  is(event.target.result instanceof Array, true, "Got an array object");
    116  is(event.target.result.length, 2, "Correct length");
    117 
    118  for (let i in event.target.result) {
    119    is(
    120      event.target.result[i],
    121      objectStoreDataHeightSort[parseInt(i) + 3].key,
    122      "Correct key"
    123    );
    124  }
    125 
    126  request = objectStore.index("height").mozGetAllKeys(65, undefined);
    127  request.onerror = errorHandler;
    128  request.onsuccess = grabEventAndContinueHandler;
    129  event = yield undefined;
    130  ok(true, "3");
    131 
    132  is(event.target.result instanceof Array, true, "Got an array object");
    133  is(event.target.result.length, 2, "Correct length");
    134 
    135  for (let i in event.target.result) {
    136    is(
    137      event.target.result[i],
    138      objectStoreDataHeightSort[parseInt(i) + 3].key,
    139      "Correct key"
    140    );
    141  }
    142 
    143  request = objectStore.index("height").mozGetAllKeys();
    144  request.onerror = errorHandler;
    145  request.onsuccess = grabEventAndContinueHandler;
    146  event = yield undefined;
    147  ok(true, "4");
    148 
    149  is(event.target.result instanceof Array, true, "Got an array object");
    150  is(
    151    event.target.result.length,
    152    objectStoreDataHeightSort.length,
    153    "Correct length"
    154  );
    155 
    156  for (let i in event.target.result) {
    157    is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key");
    158  }
    159 
    160  request = objectStore.index("height").mozGetAllKeys(null, 4);
    161  request.onerror = errorHandler;
    162  request.onsuccess = grabEventAndContinueHandler;
    163  event = yield undefined;
    164 
    165  ok(true, "5");
    166  is(event.target.result instanceof Array, true, "Got an array object");
    167  is(event.target.result.length, 4, "Correct length");
    168 
    169  for (let i in event.target.result) {
    170    is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key");
    171  }
    172 
    173  request = objectStore.index("height").mozGetAllKeys(65, 1);
    174  request.onerror = errorHandler;
    175  request.onsuccess = grabEventAndContinueHandler;
    176  event = yield undefined;
    177 
    178  ok(true, "6");
    179  is(event.target.result instanceof Array, true, "Got an array object");
    180  is(event.target.result.length, 1, "Correct length");
    181 
    182  for (let i in event.target.result) {
    183    is(
    184      event.target.result[i],
    185      objectStoreDataHeightSort[parseInt(i) + 3].key,
    186      "Correct key"
    187    );
    188  }
    189 
    190  finishTest();
    191 }