Test IndexedDB's IDBCursor.continue() with a key parameter.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
dbname = "cursor-continue.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)
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)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
objectStore.add({'x': testData[nextToAdd]}, nextToAdd)
indexObject.openKeyCursor(null, 'next')
PASS event.target.result.primaryKey is 0
event.target.result.continue(3.14159)
PASS event.target.result.primaryKey is 3
event.target.result.continue()
PASS event.target.result.primaryKey is 4
event.target.result.continue()
PASS event.target.result.primaryKey is 5
event.target.result.continue(12)
PASS event.target.result.primaryKey is 7
event.target.result.continue(date)
PASS event.target.result.primaryKey is 9
event.target.result.continue()
PASS event.target.result.primaryKey is 10
event.target.result.continue()
PASS event.target.result.primaryKey is 11
event.target.result.continue('A bit1')
PASS event.target.result.primaryKey is 14
event.target.result.continue('A bit3')
PASS event.target.result.primaryKey is 16
event.target.result.continue('the BIGGEST string')
PASS event.target.result.primaryKey is 17
event.target.result.continue()
PASS event.target.result is null
indexObject.openKeyCursor(null, 'prev')
PASS event.target.result.primaryKey is 17
event.target.result.continue('A bit2')
PASS event.target.result.primaryKey is 15
event.target.result.continue()
PASS event.target.result.primaryKey is 14
event.target.result.continue(date)
PASS event.target.result.primaryKey is 10
event.target.result.continue()
PASS event.target.result.primaryKey is 9
event.target.result.continue(1)
PASS event.target.result.primaryKey is 2
event.target.result.continue()
PASS event.target.result.primaryKey is 1
event.target.result.continue()
PASS event.target.result.primaryKey is 0
event.target.result.continue()
PASS event.target.result is null
indexObject.openKeyCursor(null, 'prevunique')
PASS event.target.result.primaryKey is 17
event.target.result.continue('A bit2')
PASS event.target.result.primaryKey is 15
event.target.result.continue()
PASS event.target.result.primaryKey is 14
event.target.result.continue(date)
PASS event.target.result.primaryKey is 9
event.target.result.continue()
PASS event.target.result.primaryKey is 8
event.target.result.continue(12)
PASS event.target.result.primaryKey is 7
event.target.result.continue(3.5)
PASS event.target.result.primaryKey is 3
event.target.result.continue()
PASS event.target.result.primaryKey is 1
event.target.result.continue()
PASS event.target.result.primaryKey is 0
event.target.result.continue()
PASS event.target.result is null
indexObject.openKeyCursor(null, 'next')
PASS event.target.result.primaryKey is 0
event.target.result.continue(3.14159)
PASS event.target.result.primaryKey is 3
Expecting exception from event.target.result.continue(1)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
indexObject.openKeyCursor(null, 'next')
PASS event.target.result.primaryKey is 0
event.target.result.continue(3.14159)
PASS event.target.result.primaryKey is 3
Expecting exception from event.target.result.continue(3.14159)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
indexObject.openKeyCursor(null, 'prev')
PASS event.target.result.primaryKey is 17
event.target.result.continue('A bit2')
PASS event.target.result.primaryKey is 15
Expecting exception from event.target.result.continue('A bit3')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
indexObject.openKeyCursor(null, 'prev')
PASS event.target.result.primaryKey is 17
event.target.result.continue('A bit2')
PASS event.target.result.primaryKey is 15
cursor = event.target.result
Expecting exception from event.target.result.continue('A bit2')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
Expecting exception from cursor.continue()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Exception message: Failed to execute 'continue' on 'IDBCursor': The transaction has finished.
PASS successfullyParsed is true
TEST COMPLETE