tor-browser

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

test_locale_aware_index_getAll.js (6189B)


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