Test the basics of IndexedDB's IDBObjectStore. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". webkitIndexedDB.open('objectstore-basics') openSuccess(): db = event.target.result db.setVersion('new version') setVersionSuccess(): trans = event.target.result PASS trans !== null is true Deleted all object stores. createObjectStore(): store = db.createObjectStore('storeName', null) storeNames = db.objectStoreNames PASS store.name is "storeName" PASS store.keyPath is null PASS storeNames.contains('storeName') is true PASS storeNames.length is 1 Ask for an index that doesn't exist: index = store.index('asdf') PASS Exception thrown. PASS code is webkitIDBDatabaseException.NOT_FOUND_ERR createIndex(): index = store.createIndex('indexName', 'x', {unique: true}) PASS index !== null is true PASS store.indexNames.contains('indexName') is true index = store.index('indexName') PASS index !== null is true Ask for an index that doesn't exist: index = store.index('asdf') PASS Exception thrown. PASS code is webkitIDBDatabaseException.NOT_FOUND_ERR db.setVersion("version fail") PASS db.version is "version fail" setVersionTrans = event.target.result PASS setVersionTrans !== null is true store = setVersionTrans.objectStore('storeName') index = store.createIndex('indexFail', 'x') PASS db.version is "new version" PASS store.indexNames is ['indexName'] PASS store.indexNames.length is 1 PASS store.indexNames.contains('') is false PASS store.indexNames.contains('indexFail') is false PASS store.indexNames.contains('indexName') is true PASS store.indexNames[0] is "indexName" PASS store.indexNames[1] is null PASS store.indexNames[100] is null PASS store.indexNames.item(1) is null PASS store.indexNames.item(100) is null transaction = db.transaction([], webkitIDBTransaction.READ_WRITE) store = transaction.objectStore('storeName') Try to insert data with a Date key: store.add({x: 'foo'}, testDate) Try to insert a value not handled by structured clone: store.add({x: 'bar', y: document.getElementById('console')}, 'bar') PASS Exception thrown PASS code is DOMException.NOT_SUPPORTED_ERR Try to insert data where key path yields a Date key: store.add({x: testDateB, y: 'value'}, 'key') addSuccess(): PASS event.target.result is "key" event.target.source.add({x: 'foo'}, 'zzz') addAgainFailure(): PASS event.target.errorCode is webkitIDBDatabaseException.UNKNOWN_ERR event.preventDefault() db.transaction([], webkitIDBTransaction.READ_WRITE) store = transaction.objectStore('storeName') store.add({x: 'othervalue'}, null) addWithNullKeyFailre(): PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR event.preventDefault() db.transaction([], webkitIDBTransaction.READ_WRITE) store = transaction.objectStore('storeName') store.add({x: null}, 'validkey') PASS event.cancelable is true addWithNullIndexFailure(): PASS event.target.errorCode is webkitIDBDatabaseException.DATA_ERR event.preventDefault() db.transaction([], webkitIDBTransaction.READ_WRITE) store = transaction.objectStore('storeName') store.get('key') getSuccess(): PASS event.target.result.y is "value" store = event.target.source store.get(testDate) getSuccessDateKey(): PASS event.target.result.x is "foo" store.delete('key') removeSuccess(): PASS event.target.result is null store = event.target.source Passing an invalid key into store.get(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 Passing an invalid key into store.delete(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 Passing an invalid key into store.add(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 Passing an invalid key into store.put(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 PASS successfullyParsed is true TEST COMPLETE