/**
* 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" , false , 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, 4 , "Saw all the expected keys" );
ok(true , "Test group 7" );
keyIndex = 2 ;
keyRange = IDBKeyRange.bound("Bob" , "Ron" , true , 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, 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" , false , 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, 4 , "Saw all the expected keys" );
ok(true , "Test group 18" );
keyIndex = 2 ;
keyRange = IDBKeyRange.bound("Bob" , "Ron" , true , 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, 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 in Prozent C=94 H=97 G=95
¤ Dauer der Verarbeitung: 0.13 Sekunden
¤
*© Formatika GbR, Deutschland