This tests some obvious failures that can happen while calling the IDBIndex methods get(), getKey(), and count().

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 get with a null key
Failed to getKey with a null key
Failed to get with deleted IDBIndex
Failed to getKey with deleted IDBIndex
Failed to count with deleted IDBIndex
Failed to delete a nonexistent IDBIndex
Failed to get with deleted IDBObjectStore
Failed to getKey with deleted IDBObjectStore
Failed to count with deleted IDBObjectStore
Initial upgrade versionchange transaction complete
Failed to get while transaction inactive
Failed to getKey while transaction inactive
Failed to count while transaction inactive
readonly transaction complete
PASS successfullyParsed is true

TEST COMPLETE

