Test IndexedDB's IDBIndex.openCursor + the cursor it produces in depth.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
dbname = "index-cursor.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
db.createObjectStore('someObjectStore')
objectStore.createIndex('someIndex', 'x')
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
Scheduling tests...
Running tests...
Next test: lower open bound is 0; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 0; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 0; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 0; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 0; sorted descending.
PASS event.target.result is null
Next test: lower bound is 0; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 0; sorted descending.
PASS event.target.result is null
Next test: upper bound is 0; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 0; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 0; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 0; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 0; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 0; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 0; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 0; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 0; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 0; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 0; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 0; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 0; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 0; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 0; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 0; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 0; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 1; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 1; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 1; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 1; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 1; sorted descending.
PASS event.target.result is null
Next test: lower bound is 1; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 1; sorted descending.
PASS event.target.result is null
Next test: upper bound is 1; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 1; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 1; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 1; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 1; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 1; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 1; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 1; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 1; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 1; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 1; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 1; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 1; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 1; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 1; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 1; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 1; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 2; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 2; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 2; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 2; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 2; sorted descending.
PASS event.target.result is null
Next test: lower bound is 2; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 2; sorted descending.
PASS event.target.result is null
Next test: upper bound is 2; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 2; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 2; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 2; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 2; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 2; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 2; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 2; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 2; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 2; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 2; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 2; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 2; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 2; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 2; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 2; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 2; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 3; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 3; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 3; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 3; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 3; sorted descending.
PASS event.target.result is null
Next test: lower bound is 3; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 3; sorted descending.
PASS event.target.result is null
Next test: upper bound is 3; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 3; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 3; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 3; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 3; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 3; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 3; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 3; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 3; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 3; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 3; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 3; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 3; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 3; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 3; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 3; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 3; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 4; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 4; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 4; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 4; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 4; sorted descending.
PASS event.target.result is null
Next test: lower bound is 4; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 4; sorted descending.
PASS event.target.result is null
Next test: upper bound is 4; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 4; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 4; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 4; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 4; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 4; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 4; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 4; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 4; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 4; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 4; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 4; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 4; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 4; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 4; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 4; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 4; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 5; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 5; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 5; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 5; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 5; sorted descending.
PASS event.target.result is null
Next test: lower bound is 5; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 5; sorted descending.
PASS event.target.result is null
Next test: upper bound is 5; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 5; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 5; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 5; upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 5; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 5; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 5; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 5; upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 5; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 5; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 5; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 5; upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 5; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 5; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 5; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 5; upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 5; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 6; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 6; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower bound is 6; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 6; sorted descending.
PASS event.target.result is null
Next test: upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 6; upper open bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower open bound is 6; upper bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 6; upper open bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 6; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 6; upper open bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower open bound is 6; upper bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower bound is 6; upper open bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower bound is 6; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 6; upper open bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower open bound is 6; upper bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 6; upper open bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 6; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 6; upper open bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower open bound is 6; upper bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower bound is 6; upper open bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower bound is 6; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower bound is 7; sorted ascending.
PASS event.target.result is null
Next test: upper open bound is 7; sorted ascending.
PASS event.target.result is null
Next test: upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower bound is 7; sorted descending.
PASS event.target.result is null
Next test: upper open bound is 7; sorted descending.
PASS event.target.result is null
Next test: upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 7; upper open bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower open bound is 7; upper bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 7; upper open bound is 6; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 7; upper bound is 6; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 7; upper open bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower open bound is 7; upper bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower bound is 7; upper open bound is 6; sorted descending.
Skipping illegal key range.
Next test: lower bound is 7; upper bound is 6; sorted descending.
PASS event.target.result is null
Next test: lower open bound is 7; upper open bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower open bound is 7; upper bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 7; upper open bound is 7; sorted ascending.
Skipping illegal key range.
Next test: lower bound is 7; upper bound is 7; sorted ascending.
PASS event.target.result is null
Next test: lower open bound is 7; upper open bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower open bound is 7; upper bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower bound is 7; upper open bound is 7; sorted descending.
Skipping illegal key range.
Next test: lower bound is 7; upper bound is 7; sorted descending.
PASS event.target.result is null
Next test: null key path sorted ascending.
PASS event.target.result is null
Next test: null key path sorted descending.
PASS event.target.result is null
PASS successfullyParsed is true
TEST COMPLETE