dom/indexedDB/test/unit/test_getAll.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 values = [ "a", "1", 1, "foo", 300, true, false, 4.5, null ];
    14   let request = indexedDB.open(name, 1);
    15   request.onerror = errorHandler;
    16   request.onupgradeneeded = grabEventAndContinueHandler;
    17   let event = yield undefined;
    19   let db = event.target.result;
    21   let objectStore = db.createObjectStore("foo", { autoIncrement: true });
    23   request.onsuccess = grabEventAndContinueHandler;
    24   request = objectStore.mozGetAll();
    25   request.onerror = errorHandler;
    26   request.onsuccess = grabEventAndContinueHandler;
    27   event = yield undefined;
    29   is(event.target.result instanceof Array, true, "Got an array object");
    30   is(event.target.result.length, 0, "No elements");
    32   let addedCount = 0;
    34   for (let i in values) {
    35     request = objectStore.add(values[i]);
    36     request.onerror = errorHandler;
    37     request.onsuccess = function(event) {
    38       if (++addedCount == values.length) {
    39         executeSoon(function() { testGenerator.next(); });
    40       }
    41     }
    42   }
    43   yield undefined;
    44   yield undefined;
    46   request = db.transaction("foo").objectStore("foo").mozGetAll();
    47   request.onerror = errorHandler;
    48   request.onsuccess = grabEventAndContinueHandler;
    49   event = yield undefined;
    51   is(event.target.result instanceof Array, true, "Got an array object");
    52   is(event.target.result.length, values.length, "Same length");
    54   for (let i in event.target.result) {
    55     is(event.target.result[i], values[i], "Same value");
    56   }
    58   request = db.transaction("foo").objectStore("foo").mozGetAll(null, 5);
    59   request.onerror = errorHandler;
    60   request.onsuccess = grabEventAndContinueHandler;
    61   event = yield undefined;
    63   is(event.target.result instanceof Array, true, "Got an array object");
    64   is(event.target.result.length, 5, "Correct length");
    66   for (let i in event.target.result) {
    67     is(event.target.result[i], values[i], "Same value");
    68   }
    70   let keyRange = IDBKeyRange.bound(1, 9);
    72   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
    73   request.onerror = errorHandler;
    74   request.onsuccess = grabEventAndContinueHandler;
    75   event = yield undefined;
    77   is(event.target.result instanceof Array, true, "Got an array object");
    78   is(event.target.result.length, values.length, "Correct length");
    80   for (let i in event.target.result) {
    81     is(event.target.result[i], values[i], "Same value");
    82   }
    84   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
    85   request.onerror = errorHandler;
    86   request.onsuccess = grabEventAndContinueHandler;
    87   event = yield undefined;
    89   is(event.target.result instanceof Array, true, "Got an array object");
    90   is(event.target.result.length, values.length, "Correct length");
    92   for (let i in event.target.result) {
    93     is(event.target.result[i], values[i], "Same value");
    94   }
    96   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, null);
    97   request.onerror = errorHandler;
    98   request.onsuccess = grabEventAndContinueHandler;
    99   event = yield undefined;
   101   is(event.target.result instanceof Array, true, "Got an array object");
   102   is(event.target.result.length, values.length, "Correct length");
   104   for (let i in event.target.result) {
   105     is(event.target.result[i], values[i], "Same value");
   106   }
   108   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, undefined);
   109   request.onerror = errorHandler;
   110   request.onsuccess = grabEventAndContinueHandler;
   111   event = yield undefined;
   113   is(event.target.result instanceof Array, true, "Got an array object");
   114   is(event.target.result.length, values.length, "Correct length");
   116   for (let i in event.target.result) {
   117     is(event.target.result[i], values[i], "Same value");
   118   }
   120   keyRange = IDBKeyRange.bound(4, 7);
   122   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
   123   request.onerror = errorHandler;
   124   request.onsuccess = grabEventAndContinueHandler;
   125   event = yield undefined;
   127   is(event.target.result instanceof Array, true, "Got an array object");
   128   is(event.target.result.length, 4, "Correct length");
   130   for (let i in event.target.result) {
   131     is(event.target.result[i], values[parseInt(i) + 3], "Same value");
   132   }
   134   // Get should take a key range also but it doesn't return an array.
   135   request = db.transaction("foo").objectStore("foo").get(keyRange);
   136   request.onerror = errorHandler;
   137   request.onsuccess = grabEventAndContinueHandler;
   138   event = yield undefined;
   140   is(event.target.result instanceof Array, false, "Not an array object");
   141   is(event.target.result, values[3], "Correct value");
   143   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 2);
   144   request.onerror = errorHandler;
   145   request.onsuccess = grabEventAndContinueHandler;
   146   event = yield undefined;
   148   is(event.target.result instanceof Array, true, "Got an array object");
   149   is(event.target.result.length, 2, "Correct length");
   151   for (let i in event.target.result) {
   152     is(event.target.result[i], values[parseInt(i) + 3], "Same value");
   153   }
   155   keyRange = IDBKeyRange.bound(4, 7);
   157   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 50);
   158   request.onerror = errorHandler;
   159   request.onsuccess = grabEventAndContinueHandler;
   160   event = yield undefined;
   162   is(event.target.result instanceof Array, true, "Got an array object");
   163   is(event.target.result.length, 4, "Correct length");
   165   for (let i in event.target.result) {
   166     is(event.target.result[i], values[parseInt(i) + 3], "Same value");
   167   }
   169   keyRange = IDBKeyRange.bound(4, 7);
   171   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
   172   request.onerror = errorHandler;
   173   request.onsuccess = grabEventAndContinueHandler;
   174   event = yield undefined;
   176   is(event.target.result instanceof Array, true, "Got an array object");
   177   is(event.target.result.length, 4, "Correct length");
   179   keyRange = IDBKeyRange.bound(4, 7, true, true);
   181   request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
   182   request.onerror = errorHandler;
   183   request.onsuccess = grabEventAndContinueHandler;
   184   event = yield undefined;
   186   is(event.target.result instanceof Array, true, "Got an array object");
   187   is(event.target.result.length, 2, "Correct length");
   189   for (let i in event.target.result) {
   190     is(event.target.result[i], values[parseInt(i) + 4], "Same value");
   191   }
   193   finishTest();
   194   yield undefined;
   195 }

mercurial