[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] dbname = "objectstore-basics.js"
[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] 'openKeyCursor' in store is true
PASS [Worker] typeof store.openKeyCursor 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 execute 'add' on 'IDBObjectStore': #<DedicatedWorkerGlobalScope> 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 execute 'add' on '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 execute 'add' on '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 execute 'put' on '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 execute 'put' on '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 execute 'put' on '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 execute 'put' on '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 execute 'put' on '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 execute 'put' on '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 execute 'add' on '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 execute 'add' on '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 execute 'add' on '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 execute 'add' on '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 execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
PASS successfullyParsed is true

TEST COMPLETE

