Test IndexedDB's createObjectStore's various options

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)
db.createObjectStore('a', {keyPath: 'a'})
db.createObjectStore('b')
db.createObjectStore('c', {autoIncrement: true});
trans = db.transaction(['a', 'b'], 'readwrite')
PASS trans.mode is "readwrite"
trans.objectStore('a').put({'a': 0})
Expecting TypeError exception from db.createObjectStore('d', 'bar');
PASS Exception was thrown.
PASS db.createObjectStore('d', 'bar'); threw TypeError: Type error
Expecting TypeError exception from db.createObjectStore('e', false);
PASS Exception was thrown.
PASS db.createObjectStore('e', false); threw TypeError: Type error
trans.objectStore('b').put({'a': 0}, 0)
trans.objectStore('a').get(0)
PASS event.target.result.a is {a: 0}
trans.objectStore('b').get(0)
PASS event.target.result.a is {a: 0}
PASS successfullyParsed is true

TEST COMPLETE

