Commit 53c3a484 authored by jsbell@chromium.org's avatar jsbell@chromium.org

Import Mozilla's IndexedDB getAll/getAllKeys tests

BUG=457450

Review URL: https://codereview.chromium.org/1312983006

git-svn-id: svn://svn.chromium.org/blink/trunk@201171 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 66160b31
'use strict';
// Adapter for Mozilla's getAll tests to Blink's js-test.
var jsTestIsAsync = true;
// Moz tests are still prefixed
IDBObjectStore.prototype.mozGetAll = IDBObjectStore.prototype.getAll;
IDBObjectStore.prototype.mozGetAllKeys = IDBObjectStore.prototype.getAllKeys;
IDBIndex.prototype.mozGetAll = IDBIndex.prototype.getAll;
IDBIndex.prototype.mozGetAllKeys = IDBIndex.prototype.getAllKeys;
function errorHandler(e) {
testFailed("Unexpected error: " + e.type + " - " + e.message);
finishJSTest();
}
function ok(t, message) {
if (!t) {
testFailed(message);
finishJSTest();
} else {
testPassed(message);
}
}
function is(a, b, message) {
ok(Object.is(a, b), message);
}
function grabEventAndContinueHandler(e) {
testGenerator.next(e);
}
function executeSoon(f) {
setTimeout(f, 0);
}
function finishTest() {
finishJSTest();
}
function unexpectedSuccessHandler(e) {
ok(false, "Unexpected success");
}
function info(message) {
debug(message);
}
testGenerator.next();
// Imported from:
// * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_getAll.js
// Changes:
// * added 'use strict' since some ES6 features NYI w/o it
// * function -> function*
// * this.window -> window
// * testGenerator.send() -> testGenerator.next()
// * Added deleteDatabase() step to reset storage state
'use strict';
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
var testGenerator = testSteps();
function* testSteps()
{
const name = window ? window.location.pathname : "Splendid Test";
indexedDB.deleteDatabase(name);
const values = [ "a", "1", 1, "foo", 300, true, false, 4.5, null ];
let request = indexedDB.open(name, 1);
request.onerror = errorHandler;
request.onupgradeneeded = grabEventAndContinueHandler;
let event = yield undefined;
let db = event.target.result;
let objectStore = db.createObjectStore("foo", { autoIncrement: true });
request.onsuccess = grabEventAndContinueHandler;
request = objectStore.mozGetAll();
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 0, "No elements");
let addedCount = 0;
for (let i in values) {
request = objectStore.add(values[i]);
request.onerror = errorHandler;
request.onsuccess = function(event) {
if (++addedCount == values.length) {
executeSoon(function() { testGenerator.next(); });
}
}
}
yield undefined;
yield undefined;
request = db.transaction("foo").objectStore("foo").mozGetAll();
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, values.length, "Same length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
request = db.transaction("foo").objectStore("foo").mozGetAll(null, 5);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 5, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
let keyRange = IDBKeyRange.bound(1, 9);
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, values.length, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, values.length, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, null);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, values.length, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, undefined);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, values.length, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[i], "Same value");
}
keyRange = IDBKeyRange.bound(4, 7);
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 4, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[parseInt(i) + 3], "Same value");
}
// Get should take a key range also but it doesn't return an array.
request = db.transaction("foo").objectStore("foo").get(keyRange);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, false, "Not an array object");
is(event.target.result, values[3], "Correct value");
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 2);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[parseInt(i) + 3], "Same value");
}
keyRange = IDBKeyRange.bound(4, 7);
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 50);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 4, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[parseInt(i) + 3], "Same value");
}
keyRange = IDBKeyRange.bound(4, 7);
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 4, "Correct length");
keyRange = IDBKeyRange.bound(4, 7, true, true);
request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], values[parseInt(i) + 4], "Same value");
}
finishTest();
yield undefined;
}
// Imported from:
// * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_index_getAll.js
// Changes:
// * added 'use strict' since some ES6 features NYI w/o it
// * function -> function*
// * this.window -> window
// * testGenerator.send() -> testGenerator.next()
// * Added deleteDatabase() step to reset storage state
'use strict';
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
var testGenerator = testSteps();
function* testSteps()
{
const name = window ? window.location.pathname : "Splendid Test";
indexedDB.deleteDatabase(name);
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: { unique: false } },
{ 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);
// 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);
}
}
}
yield undefined;
ok(true, "1");
// 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;
ok(true, "2");
objectStore = db.transaction(objectStoreName)
.objectStore(objectStoreName);
request = objectStore.index("height").mozGetAllKeys(65);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "3");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key,
"Correct key");
}
request = objectStore.index("height").mozGetAllKeys(65, 0);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "3");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key,
"Correct key");
}
request = objectStore.index("height").mozGetAllKeys(65, null);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "3");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key,
"Correct key");
}
request = objectStore.index("height").mozGetAllKeys(65, undefined);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "3");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key,
"Correct key");
}
request = objectStore.index("height").mozGetAllKeys();
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "4");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, objectStoreDataHeightSort.length,
"Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key");
}
request = objectStore.index("height").mozGetAllKeys(null, 4);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "5");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 4, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key");
}
request = objectStore.index("height").mozGetAllKeys(65, 1);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(true, "6");
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 1, "Correct length");
for (let i in event.target.result) {
is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key,
"Correct key");
}
finishTest();
yield undefined;
}
// Imported from:
// * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_index_getAllObjects.js
// Changes:
// * added 'use strict' since some ES6 features NYI w/o it
// * function -> function*
// * this.window -> window
// * testGenerator.send() -> testGenerator.next()
// * Added deleteDatabase() step to reset storage state
'use strict';
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
var testGenerator = testSteps();
function* testSteps()
{
const name = window ? window.location.pathname : "Splendid Test";
indexedDB.deleteDatabase(name);
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: { unique: false } },
{ 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, {});
// 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);
request = objectStore.index("height").mozGetAll(65);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[parseInt(i) + 3].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll(65, 0);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[parseInt(i) + 3].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll(65, null);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[parseInt(i) + 3].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll(65, undefined);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 2, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[parseInt(i) + 3].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll();
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, objectStoreDataHeightSort.length,
"Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[i].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll(null, 4);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 4, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[i].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
request = objectStore.index("height").mozGetAll(65, 1);
request.onerror = errorHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
is(event.target.result instanceof Array, true, "Got an array object");
is(event.target.result.length, 1, "Correct length");
for (let i in event.target.result) {
let result = event.target.result[i];
let testObj = objectStoreDataHeightSort[parseInt(i) + 3].value;
is(result.name, testObj.name, "Correct name");
is(result.height, testObj.height, "Correct height");
if (testObj.hasOwnProperty("weight")) {
is(result.weight, testObj.weight, "Correct weight");
}
}
finishTest();
yield undefined;
}
// Imported from:
// * http://mxr.mozilla.org/mozilla-central/source/dom/indexedDB/test/unit/test_objectStore_getAllKeys.js
// Changes:
// * added 'use strict' since some ES6 features NYI w/o it
// * function -> function*
// * this.window -> window
// * Added deleteDatabase() step to reset storage state
'use strict';
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
let testGenerator = testSteps();
function* testSteps() {
const dbName = window ?
window.location.pathname :
"test_objectStore_getAllKeys";
indexedDB.deleteDatabase(dbName);
const dbVersion = 1;
const objectStoreName = "foo";
const keyCount = 200;
let request = indexedDB.open(dbName, dbVersion);
request.onerror = errorHandler;
request.onupgradeneeded = grabEventAndContinueHandler;
request.onsuccess = unexpectedSuccessHandler;
let event = yield undefined;
info("Creating database");
let db = event.target.result;
let objectStore = db.createObjectStore(objectStoreName);
for (let i = 0; i < keyCount; i++) {
objectStore.add(true, i);
}
request.onupgradeneeded = unexpectedSuccessHandler;
request.onsuccess = grabEventAndContinueHandler;
event = yield undefined;
db = event.target.result;
objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
info("Getting all keys");
objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, keyCount, "Got correct array length");
let match = true;
for (let i = 0; i < keyCount; i++) {
if (event.target.result[i] != i) {
match = false;
break;
}
}
ok(match, "Got correct keys");
info("Getting all keys with key range");
let keyRange = IDBKeyRange.bound(10, 20, false, true);
objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, 10, "Got correct array length");
match = true;
for (let i = 10; i < 20; i++) {
if (event.target.result[i - 10] != i) {
match = false;
break;
}
}
ok(match, "Got correct keys");
info("Getting all keys with unmatched key range");
keyRange = IDBKeyRange.bound(10000, 200000);
objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, 0, "Got correct array length");
info("Getting all keys with limit");
objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, 5, "Got correct array length");
match = true;
for (let i = 0; i < 5; i++) {
if (event.target.result[i] != i) {
match = false;
break;
}
}
ok(match, "Got correct keys");
info("Getting all keys with key range and limit");
keyRange = IDBKeyRange.bound(10, 20, false, true);
objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, 5, "Got correct array length");
match = true;
for (let i = 10; i < 15; i++) {
if (event.target.result[i - 10] != i) {
match = false;
break;
}
}
ok(match, "Got correct keys");
info("Getting all keys with unmatched key range and limit");
keyRange = IDBKeyRange.bound(10000, 200000);
objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
event = yield undefined;
ok(Array.isArray(event.target.result), "Got an array result");
is(event.target.result.length, 0, "Got correct array length");
finishTest();
yield undefined;
}
IDBObjectStore.getAll()
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS Got an array object
PASS No elements
PASS Got an array object
PASS Same length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Not an array object
PASS Correct value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS Same value
PASS Same value
PASS Got an array object
PASS Correct length
PASS Got an array object
PASS Correct length
PASS Same value
PASS Same value
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<title>IDBObjectStore.getAll()</title>
<script src="../../../resources/js-test.js"></script>
<script>description(document.title);</script>
<script src="resources/test_getAll.js"></script>
<script src="resources/getAll_test_adapter.js"></script>
IDBIndex.getAllKeys()
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS 1
PASS Good index count
PASS 2
PASS 3
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS 3
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS 3
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS 3
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS 4
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS Correct key
PASS Correct key
PASS Correct key
PASS Correct key
PASS 5
PASS Got an array object
PASS Correct length
PASS Correct key
PASS Correct key
PASS Correct key
PASS Correct key
PASS 6
PASS Got an array object
PASS Correct length
PASS Correct key
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<title>IDBIndex.getAllKeys()</title>
<script src="../../../resources/js-test.js"></script>
<script>description(document.title);</script>
<script src="resources/test_index_getAll.js"></script>
<script src="resources/getAll_test_adapter.js"></script>
IDBIndex.getAll()
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS Good index count
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Correct name
PASS Correct height
PASS Correct weight
PASS Got an array object
PASS Correct length
PASS Correct name
PASS Correct height
PASS Correct weight
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<title>IDBIndex.getAll()</title>
<script src="../../../resources/js-test.js"></script>
<script>description(document.title);</script>
<script src="resources/test_index_getAllObjects.js"></script>
<script src="resources/getAll_test_adapter.js"></script>
IDBObjectStore.getAllKeys()
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Creating database
Getting all keys
PASS Got an array result
PASS Got correct array length
PASS Got correct keys
Getting all keys with key range
PASS Got an array result
PASS Got correct array length
PASS Got correct keys
Getting all keys with unmatched key range
PASS Got an array result
PASS Got correct array length
Getting all keys with limit
PASS Got an array result
PASS Got correct array length
PASS Got correct keys
Getting all keys with key range and limit
PASS Got an array result
PASS Got correct array length
PASS Got correct keys
Getting all keys with unmatched key range and limit
PASS Got an array result
PASS Got correct array length
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<title>IDBObjectStore.getAllKeys()</title>
<script src="../../../resources/js-test.js"></script>
<script>description(document.title);</script>
<script src="resources/test_objectStore_getAllKeys.js"></script>
<script src="resources/getAll_test_adapter.js"></script>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment