dom/indexedDB/test/unit/test_objectCursors.js

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 /**
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/publicdomain/zero/1.0/
     4  */
     6 var testGenerator = testSteps();
     8 function testSteps()
     9 {
    10   const name = this.window ? window.location.pathname : "Splendid Test";
    12   const objectStores = [
    13     { name: "a", autoIncrement: false },
    14     { name: "b", autoIncrement: true }
    15   ];
    17   const indexes = [
    18     { name: "a", options: { } },
    19     { name: "b", options: { unique: true } }
    20   ];
    22   var j = 0;
    23   for (let i in objectStores) {
    24     let request = indexedDB.open(name, ++j);
    25     request.onerror = errorHandler;
    26     request.onupgradeneeded = grabEventAndContinueHandler;
    27     let event = yield undefined;
    29     let db = event.target.result;
    31     let objectStore =
    32       db.createObjectStore(objectStores[i].name,
    33                            { keyPath: "id",
    34                              autoIncrement: objectStores[i].autoIncrement });
    36     for (let j in indexes) {
    37       objectStore.createIndex(indexes[j].name, "name", indexes[j].options);
    38     }
    40     let data = { name: "Ben" };
    41     if (!objectStores[i].autoIncrement) {
    42       data.id = 1;
    43     }
    45     request = objectStore.add(data);
    46     request.onerror = errorHandler;
    47     request.onsuccess = grabEventAndContinueHandler;
    48     event = yield undefined;
    50     ok(event.target.result == 1 || event.target.result == 2, "Good id");
    51     db.close();
    52   }
    54   executeSoon(function() { testGenerator.next(); });
    55   yield undefined;
    57   let request = indexedDB.open(name, j);
    58   request.onerror = errorHandler;
    59   request.onsuccess = grabEventAndContinueHandler;
    60   let event = yield undefined;
    62   let db = event.target.result;
    64   for (let i in objectStores) {
    65     for (let j in indexes) {
    66       let objectStore = db.transaction(objectStores[i].name)
    67                           .objectStore(objectStores[i].name);
    68       let index = objectStore.index(indexes[j].name);
    70       request = index.openCursor();
    71       request.onerror = errorHandler;
    72       request.onsuccess = function (event) {
    73         is(event.target.result.value.name, "Ben", "Good object");
    74         executeSoon(function() { testGenerator.next(); });
    75       }
    76       yield undefined;
    77     }
    78   }
    80   finishTest();
    81   yield undefined;
    82 }

mercurial