Test the basics of IndexedDB's IDBObjectStore. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... openSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE db = event.result db.setVersion('new version') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... setVersionSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE trans = event.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. 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. db.setVersion("version fail") PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS db.version is "version fail" setVersionTrans = event.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() store = transaction.objectStore('storeName') Try to insert data with a Date key: store.add({x: 'foo'}, new Date()) PASS Exception thrown PASS code is DOMException.TYPE_MISMATCH_ERR 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: new Date()}, 'foo') PASS Adding data where key path yielded Date key resulted in error. store.add({x: 'value'}, 'key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... addSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is "key" event.source.add({x: 'value'}, 'zzz') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... addAgainFailure(): Error event fired: PASS 'result' in event is false PASS 'code' in event is true PASS 'message' in event is true PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.code is webkitIDBDatabaseException.UNKNOWN_ERR db.transaction() store = transaction.objectStore('storeName') store.add({x: 'othervalue'}, null) PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... addWithNullKeyFailre(): Error event fired: PASS 'result' in event is false PASS 'code' in event is true PASS 'message' in event is true PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.code is webkitIDBDatabaseException.DATA_ERR db.transaction() store = transaction.objectStore('storeName') store.add({x: null}, 'validkey') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... addWithNullIndexFailure(): Error event fired: PASS 'result' in event is false PASS 'code' in event is true PASS 'message' in event is true PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.code is webkitIDBDatabaseException.DATA_ERR db.transaction() store = transaction.objectStore('storeName') store.get('key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... getSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result.x is "value" store = event.source store.delete('key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... removeSuccess(): Success event fired: PASS 'result' in event is true PASS 'code' in event is false PASS 'message' in event is false PASS 'source' in event is true PASS event.source != null is true PASS 'onsuccess' in event.target is true PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is null store = event.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