[Worker] Test the basics of IndexedDB's IDBObjectStore.

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


Starting worker: resources/objectstore-basics.js
[Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
[Worker] 
[Worker] indexedDB.deleteDatabase(dbname)
[Worker] indexedDB.open(dbname)
[Worker] 
[Worker] prepareDatabase():
[Worker] store = db.createObjectStore('storeName', null)
[Worker] storeNames = db.objectStoreNames
PASS [Worker] 'name' in store is true
PASS [Worker] 'keyPath' in store is true
PASS [Worker] 'indexNames' in store is true
PASS [Worker] 'transaction' in store is true
PASS [Worker] 'autoIncrement' in store is true
PASS [Worker] 'put' in store is true
PASS [Worker] typeof store.put is "function"
PASS [Worker] 'add' in store is true
PASS [Worker] typeof store.add is "function"
PASS [Worker] 'delete' in store is true
PASS [Worker] typeof store.delete is "function"
PASS [Worker] 'get' in store is true
PASS [Worker] typeof store.get is "function"
PASS [Worker] 'clear' in store is true
PASS [Worker] typeof store.clear is "function"
PASS [Worker] 'openCursor' in store is true
PASS [Worker] typeof store.openCursor is "function"
PASS [Worker] 'createIndex' in store is true
PASS [Worker] typeof store.createIndex is "function"
PASS [Worker] 'index' in store is true
PASS [Worker] typeof store.index is "function"
PASS [Worker] 'deleteIndex' in store is true
PASS [Worker] typeof store.deleteIndex is "function"
PASS [Worker] 'count' in store is true
PASS [Worker] typeof store.count is "function"
PASS [Worker] store.name is "storeName"
PASS [Worker] store.keyPath is null
PASS [Worker] store.autoIncrement is false
PASS [Worker] storeNames.contains('storeName') is true
PASS [Worker] storeNames.length is 1
PASS [Worker] db.createObjectStore('storeWithKeyPath', {keyPath: 'path'}).keyPath is "path"
PASS [Worker] db.createObjectStore('storeWithKeyGenerator', {autoIncrement: true}).autoIncrement is true
[Worker] Ask for an index that doesn't exist:
[Worker] Expecting exception from store.index('asdf')
PASS [Worker] Exception was thrown.
PASS [Worker] code is DOMException.NOT_FOUND_ERR
PASS [Worker] ename is 'NotFoundError'
[Worker] Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
[Worker] createIndex():
[Worker] index = store.createIndex('indexName', 'x', {unique: true})
PASS [Worker] index is non-null.
PASS [Worker] store.indexNames.contains('indexName') is true
[Worker] index = store.index('indexName')
PASS [Worker] index is non-null.
[Worker] Ask for an index that doesn't exist:
[Worker] Expecting exception from store.index('asdf')
PASS [Worker] Exception was thrown.
PASS [Worker] code is DOMException.NOT_FOUND_ERR
PASS [Worker] ename is 'NotFoundError'
[Worker] Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
[Worker] indexedDB.open(dbname, 2)
[Worker] db.close()
PASS [Worker] db.version is 2
[Worker] setVersionTrans = event.target.transaction
PASS [Worker] setVersionTrans is non-null.
[Worker] store = setVersionTrans.objectStore('storeName')
[Worker] index = store.createIndex('indexFail', 'x')
PASS [Worker] db.version is 1
PASS [Worker] store.transaction is setVersionTrans
PASS [Worker] store.indexNames is ['indexName']
PASS [Worker] store.indexNames.length is 1
PASS [Worker] store.indexNames.contains('') is false
PASS [Worker] store.indexNames.contains('indexFail') is false
PASS [Worker] store.indexNames.contains('indexName') is true
PASS [Worker] store.indexNames[0] is "indexName"
PASS [Worker] store.indexNames[1] is undefined.
PASS [Worker] store.indexNames[100] is undefined.
PASS [Worker] store.indexNames.item(1) is null
PASS [Worker] store.indexNames.item(100) is null
[Worker] 
[Worker] openAgain():
[Worker] indexedDB.open(dbname)
[Worker] 
[Worker] addData():
[Worker] db = event.target.result
[Worker] transaction = db.transaction(['storeName'], 'readwrite')
[Worker] store = transaction.objectStore('storeName')
[Worker] Try to insert data with a Date key:
[Worker] store.add({x: 'foo'}, testDate)
[Worker] Try to insert a value not handled by structured clone:
[Worker] Expecting exception from store.add({x: 'bar', y: self}, 'bar')
PASS [Worker] Exception was thrown.
PASS [Worker] code is DOMException.DATA_CLONE_ERR
[Worker] Exception message: Failed to store record in an IDBObjectStore: An object could not be cloned.
[Worker] Try to insert data where key path yields a Date key:
[Worker] store.add({x: testDateB, y: 'value'}, 'key')
[Worker] addSuccess():
PASS [Worker] event.target.result is "key"
[Worker] event.target.source.add({x: 'foo'}, 'zzz')
[Worker] addAgainFailure():
PASS [Worker] event.target.error.name is 'ConstraintError'
[Worker] event.preventDefault()
[Worker] db.transaction(['storeName'], 'readwrite')
[Worker] store = transaction.objectStore('storeName')
[Worker] store.add({x: 'somevalue'}, 'somekey')
[Worker] Expecting exception from store.add({x: 'othervalue'}, null)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.
[Worker] db.transaction(['storeName'], 'readwrite')
[Worker] store = transaction.objectStore('storeName')
[Worker] Ensure invalid key pointed at by index keyPath is ignored
[Worker] store.add({x: null}, 'validkey')
[Worker] db.transaction(['storeName'], 'readwrite')
[Worker] store = transaction.objectStore('storeName')
[Worker] store.get('key')
[Worker] getSuccess():
PASS [Worker] event.target.result.y is "value"
[Worker] store = event.target.source
[Worker] store.get(testDate)
[Worker] getSuccessDateKey():
PASS [Worker] event.target.result.x is "foo"
[Worker] store.delete('key')
[Worker] removeSuccess():
PASS [Worker] event.target.result is undefined
[Worker] store.delete('key')
[Worker] removeSuccessButNotThere():
PASS [Worker] event.target.result is undefined
[Worker] store = event.target.source
[Worker] Passing an invalid key into store.get().
[Worker] Expecting exception from store.get({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.
[Worker] Passing an invalid key into store.delete().
[Worker] Expecting exception from store.delete({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key.
[Worker] Passing an invalid key into store.add().
[Worker] Expecting exception from store.add(null, {})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.
[Worker] Passing an invalid key into store.put().
[Worker] Expecting exception from store.put(null, {})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.
[Worker] 
[Worker] testPreConditions():
[Worker] indexedDB.open(dbname, 3)
[Worker] 
[Worker] upgradeNeeded():
[Worker] storeWithInLineKeys = db.createObjectStore('storeWithInLineKeys', {keyPath: 'key'})
[Worker] storeWithOutOfLineKeys = db.createObjectStore('storeWithOutIOfLineKeys')
[Worker] storeWithIndex = db.createObjectStore('storeWithIndex')
[Worker] index = storeWithIndex.createIndex('indexName', 'indexKey')
[Worker] 
[Worker] IDBObjectStore.put()
[Worker] The object store uses in-line keys and the key parameter was provided.
[Worker] Expecting exception from storeWithInLineKeys.put({key: 1}, 'key')
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The object store uses in-line keys and the key parameter was provided.
[Worker] The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
[Worker] Expecting exception from storeWithOutOfLineKeys.put({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
[Worker] The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
[Worker] Expecting exception from storeWithInLineKeys.put({key: null})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: Evaluating the object store's key path yielded a value that is not a valid key.
[Worker] The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
[Worker] Expecting exception from storeWithInLineKeys.put({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: Evaluating the object store's key path did not yield a value.
[Worker] The key parameter was provided but does not contain a valid key.
[Worker] Expecting exception from storeWithOutOfLineKeys.put({}, null)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.
[Worker] 
[Worker] IDBObjectStore.add()
[Worker] The object store uses in-line keys and the key parameter was provided.
[Worker] Expecting exception from storeWithInLineKeys.add({key: 1}, 'key')
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The object store uses in-line keys and the key parameter was provided.
[Worker] The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
[Worker] Expecting exception from storeWithOutOfLineKeys.add({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
[Worker] The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
[Worker] Expecting exception from storeWithInLineKeys.add({key: null})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: Evaluating the object store's key path yielded a value that is not a valid key.
[Worker] The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
[Worker] Expecting exception from storeWithInLineKeys.add({})
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: Evaluating the object store's key path did not yield a value.
[Worker] The key parameter was provided but does not contain a valid key.
[Worker] Expecting exception from storeWithOutOfLineKeys.add({}, null)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'DataError'
[Worker] Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.
PASS successfullyParsed is true

TEST COMPLETE

