Test IndexedDB's cursor iteration with update and deletion.

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)

prepareDatabase():
db = event.target.result
Deleted all object stores.
objectStore = db.createObjectStore('objectStore')
objectStore.createIndex('key', 'key', {unique: false})

onOpenSuccess():
db = event.target.result
t = db.transaction('objectStore', 'readwrite')
objectStore = t.objectStore('objectStore')
index = objectStore.index('key')
index.openCursor()
PASS JSON.stringify(cursor.value) is "{\"key\":\"key1\",\"value\":\"value1\"}"
Update cursor
Cursor continues

PASS JSON.stringify(cursor.value) is "{\"key\":\"key1\",\"value\":\"value1\"}"
Update cursor
Cursor continues

PASS JSON.stringify(cursor.value) is "{\"key\":\"key1\",\"value\":\"value3\"}"
Update cursor
Cursor continues

PASS JSON.stringify(cursor.value) is "{\"key\":\"key2\",\"value\":\"value2\"}"
Delete cursor
Cursor continues

PASS JSON.stringify(cursor.value) is "{\"key\":\"key2\",\"value\":\"value4\"}"
Delete cursor
Cursor continues

PASS JSON.stringify(cursor.value) is "{\"key\":\"key3\",\"value\":\"value5\"}"
Delete last record
Cursor continues

PASS totalRecordCount is 6
PASS successfullyParsed is true

TEST COMPLETE

