Test IndexedDB undefined as record value

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)
objectStore = db.createObjectStore('foo');
result = objectStore.add(undefined, Infinity);
result = objectStore.get(Infinity);
value = event.target.result;
PASS value is undefined
result = objectStore.openCursor();
cursor = event.target.result;
PASS cursor.key is Infinity
PASS cursor.value is undefined
PASS successfullyParsed is true

TEST COMPLETE

