This tests some obvious failures that can happen while calling IDBCursor.continue() on object store cursors.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;

indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
Initial upgrade needed: Old version - 0 New version - 1
Failed to continue a 'next' object store cursor to a key less than the current key
Failed to continue object store cursor with invalid key
Failed to continue object store cursor after deleting object store
Failed to continue a 'prev' object store cursor to a key greater than the current key
Failed to continue an object store cursor when it is already fetching the next record
Initial upgrade versionchange transaction complete
Failed to continue object store cursor while transaction inactive
readonly transaction complete
PASS successfullyParsed is true

TEST COMPLETE

