Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/indexedDB/test/unit/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 39 kB image not shown  

Quelle  test_indexes.js   Sprache: JAVA

 
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */


var testGenerator = testSteps();

function* testSteps() {
  const name = this.window ? window.location.pathname : "Splendid Test";

  const objectStoreName = "People";

  const objectStoreData = [
    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
    { key: "237-23-7737", value: { name: "Pat", height: 65 } },
  ];

  const indexData = [
    { name: "name", keyPath: "name", options: { unique: true } },
    { name: "height", keyPath: "height", options: {} },
    { name: "weight", keyPath: "weight", options: { unique: false } },
  ];

  const objectStoreDataNameSort = [
    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
    { key: "237-23-7737", value: { name: "Pat", height: 65 } },
    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
  ];

  const objectStoreDataWeightSort = [
    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
  ];

  const objectStoreDataHeightSort = [
    { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } },
    { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } },
    { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } },
    { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } },
    { key: "237-23-7737", value: { name: "Pat", height: 65 } },
    { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } },
  ];

  let request = indexedDB.open(name, 1);
  request.onerror = errorHandler;
  request.onupgradeneeded = grabEventAndContinueHandler;
  request.onsuccess = grabEventAndContinueHandler;
  let event = yield undefined;
  let db = event.target.result;

  let objectStore = db.createObjectStore(objectStoreName, { keyPath: null });

  // First, add all our data to the object store.
  let addedData = 0;
  for (let i in objectStoreData) {
    request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
    request.onerror = errorHandler;
    request.onsuccess = function (event) {
      if (++addedData == objectStoreData.length) {
        testGenerator.next(event);
      }
    };
  }
  event = yield undefined;
  // Now create the indexes.
  for (let i in indexData) {
    objectStore.createIndex(
      indexData[i].name,
      indexData[i].keyPath,
      indexData[i].options
    );
  }
  is(objectStore.indexNames.length, indexData.length, "Good index count");
  yield undefined;
  objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);

  // Check global properties to make sure they are correct.
  is(objectStore.indexNames.length, indexData.length, "Good index count");
  for (let i in indexData) {
    let found = false;
    for (let j = 0; j < objectStore.indexNames.length; j++) {
      if (objectStore.indexNames.item(j) == indexData[i].name) {
        found = true;
        break;
      }
    }
    is(found, true"objectStore has our index");
    let index = objectStore.index(indexData[i].name);
    is(index.name, indexData[i].name, "Correct name");
    is(index.objectStore.name, objectStore.name, "Correct store name");
    is(index.keyPath, indexData[i].keyPath, "Correct keyPath");
    is(index.unique, !!indexData[i].options.unique, "Correct unique value");
  }

  request = objectStore.index("name").getKey("Bob");
  request.onerror = errorHandler;
  request.onsuccess = grabEventAndContinueHandler;
  event = yield undefined;

  is(event.target.result, "237-23-7732""Correct key returned!");

  request = objectStore.index("name").get("Bob");
  request.onerror = errorHandler;
  request.onsuccess = grabEventAndContinueHandler;
  event = yield undefined;

  is(event.target.result.name, "Bob""Correct name returned!");
  is(event.target.result.height, 60, "Correct height returned!");
  is(event.target.result.weight, 120, "Correct weight returned!");

  ok(true"Test group 1");

  let keyIndex = 0;

  request = objectStore.index("name").openKeyCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      ok(!("value" in cursor), "No value");

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );
      ok(!("value" in cursor), "No value");

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreData.length, "Saw all the expected keys");

  ok(true"Test group 2");

  keyIndex = 0;

  request = objectStore.index("weight").openKeyCursor(null"next");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataWeightSort[keyIndex].value.weight,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataWeightSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataWeightSort[keyIndex].value.weight,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataWeightSort[keyIndex].key,
        "Correct value"
      );

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreData.length - 1, "Saw all the expected keys");

  // Check that the name index enforces its unique constraint.
  objectStore = db
    .transaction(objectStoreName, "readwrite")
    .objectStore(objectStoreName);
  request = objectStore.add(
    { name: "Bob", height: 62, weight: 170 },
    "237-23-7738"
  );
  request.addEventListener("error"new ExpectError("ConstraintError"true));
  request.onsuccess = unexpectedSuccessHandler;
  event = yield undefined;

  ok(true"Test group 3");

  keyIndex = objectStoreDataNameSort.length - 1;

  request = objectStore.index("name").openKeyCursor(null"prev");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 4");

  keyIndex = 1;
  let keyRange = IDBKeyRange.bound("Bob""Ron");

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 5");

  keyIndex = 2;
  keyRange = IDBKeyRange.bound("Bob""Ron"true);

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 6");

  keyIndex = 1;
  keyRange = IDBKeyRange.bound("Bob""Ron"falsetrue);

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 7");

  keyIndex = 2;
  keyRange = IDBKeyRange.bound("Bob""Ron"truetrue);

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 8");

  keyIndex = 1;
  keyRange = IDBKeyRange.lowerBound("Bob");

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreDataNameSort.length, "Saw all the expected keys");

  ok(true"Test group 9");

  keyIndex = 2;
  keyRange = IDBKeyRange.lowerBound("Bob"true);

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreDataNameSort.length, "Saw all the expected keys");

  ok(true"Test group 10");

  keyIndex = 0;
  keyRange = IDBKeyRange.upperBound("Joe");

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 3, "Saw all the expected keys");

  ok(true"Test group 11");

  keyIndex = 0;
  keyRange = IDBKeyRange.upperBound("Joe"true);

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 2, "Saw all the expected keys");

  ok(true"Test group 12");

  keyIndex = 3;
  keyRange = IDBKeyRange.only("Pat");

  request = objectStore.index("name").openKeyCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 13");

  keyIndex = 0;

  request = objectStore.index("name").openCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreDataNameSort.length, "Saw all the expected keys");

  ok(true"Test group 14");

  keyIndex = objectStoreDataNameSort.length - 1;

  request = objectStore.index("name").openCursor(null"prev");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 15");

  keyIndex = 1;
  keyRange = IDBKeyRange.bound("Bob""Ron");

  request = objectStore.index("name").openCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 16");

  keyIndex = 2;
  keyRange = IDBKeyRange.bound("Bob""Ron"true);

  request = objectStore.index("name").openCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 17");

  keyIndex = 1;
  keyRange = IDBKeyRange.bound("Bob""Ron"falsetrue);

  request = objectStore.index("name").openCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 18");

  keyIndex = 2;
  keyRange = IDBKeyRange.bound("Bob""Ron"truetrue);

  request = objectStore.index("name").openCursor(keyRange);
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 19");

  keyIndex = 4;
  keyRange = IDBKeyRange.bound("Bob""Ron");

  request = objectStore.index("name").openCursor(keyRange, "prev");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 0, "Saw all the expected keys");

  ok(true"Test group 20");

  // Test "nextunique"
  keyIndex = 3;
  keyRange = IDBKeyRange.only(65);

  request = objectStore.index("height").openKeyCursor(keyRange, "next");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 21");

  keyIndex = 3;
  keyRange = IDBKeyRange.only(65);

  request = objectStore.index("height").openKeyCursor(keyRange, "nextunique");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 21.5");

  keyIndex = 5;

  request = objectStore.index("height").openKeyCursor(null"prev");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 22");

  keyIndex = 5;

  request = objectStore.index("height").openKeyCursor(null"prevunique");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct value"
      );

      cursor.continue();
      if (keyIndex == 5) {
        keyIndex--;
      }
      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 23");

  keyIndex = 3;
  keyRange = IDBKeyRange.only(65);

  request = objectStore.index("height").openCursor(keyRange, "next");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataHeightSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataHeightSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 5, "Saw all the expected keys");

  ok(true"Test group 24");

  keyIndex = 3;
  keyRange = IDBKeyRange.only(65);

  request = objectStore.index("height").openCursor(keyRange, "nextunique");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataHeightSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataHeightSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();
      keyIndex++;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, 4, "Saw all the expected keys");

  ok(true"Test group 24.5");

  keyIndex = 5;

  request = objectStore.index("height").openCursor(null"prev");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataHeightSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataHeightSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();
      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 25");

  keyIndex = 5;

  request = objectStore.index("height").openCursor(null"prevunique");
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataHeightSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataHeightSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataHeightSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataHeightSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      cursor.continue();
      if (keyIndex == 5) {
        keyIndex--;
      }
      keyIndex--;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, -1, "Saw all the expected keys");

  ok(true"Test group 26");

  keyIndex = 0;

  request = objectStore.index("name").openKeyCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      let nextKey = !keyIndex ? "Pat" : undefined;

      cursor.continue(nextKey);

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      if (!keyIndex) {
        keyIndex = 3;
      } else {
        keyIndex++;
      }
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreData.length, "Saw all the expected keys");

  ok(true"Test group 27");

  keyIndex = 0;

  request = objectStore.index("name").openKeyCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      let nextKey = !keyIndex ? "Flo" : undefined;

      cursor.continue(nextKey);

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct value"
      );

      keyIndex += keyIndex ? 1 : 2;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreData.length, "Saw all the expected keys");

  ok(true"Test group 28");

  keyIndex = 0;

  request = objectStore.index("name").openCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      let nextKey = !keyIndex ? "Pat" : undefined;

      cursor.continue(nextKey);

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      if (!keyIndex) {
        keyIndex = 3;
      } else {
        keyIndex++;
      }
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreDataNameSort.length, "Saw all the expected keys");

  ok(true"Test group 29");

  keyIndex = 0;

  request = objectStore.index("name").openCursor();
  request.onerror = errorHandler;
  request.onsuccess = function (event) {
    let cursor = event.target.result;
    if (cursor) {
      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      let nextKey = !keyIndex ? "Flo" : undefined;

      cursor.continue(nextKey);

      is(
        cursor.key,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct key"
      );
      is(
        cursor.primaryKey,
        objectStoreDataNameSort[keyIndex].key,
        "Correct primary key"
      );
      is(
        cursor.value.name,
        objectStoreDataNameSort[keyIndex].value.name,
        "Correct name"
      );
      is(
        cursor.value.height,
        objectStoreDataNameSort[keyIndex].value.height,
        "Correct height"
      );
      if ("weight" in cursor.value) {
        is(
          cursor.value.weight,
          objectStoreDataNameSort[keyIndex].value.weight,
          "Correct weight"
        );
      }

      keyIndex += keyIndex ? 1 : 2;
    } else {
      testGenerator.next();
    }
  };
  yield undefined;

  is(keyIndex, objectStoreDataNameSort.length, "Saw all the expected keys");

  finishTest();
}

Messung V0.5
C=100 H=97 G=98

¤ Dauer der Verarbeitung: 0.14 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.