[Worker] Test IndexedDB cursor.advance().

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Starting worker: resources/cursor-advance.js
[Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
[Worker] 
[Worker] indexedDB.deleteDatabase(dbname)
[Worker] indexedDB.open(dbname)
[Worker] 
[Worker] prepareDatabase():
[Worker] objectStore = db.createObjectStore(objectStoreName);
[Worker] Now create the indexes.
[Worker] objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
[Worker] objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
[Worker] objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
[Worker] trans = db.transaction(objectStoreName, 'readwrite')
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] First, add all our data to the object store.
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
[Worker] testSimple()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor()
[Worker] cursor.advance(1)
PASS [Worker] expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}"
[Worker] testContinueThenAdvance()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor()
[Worker] cursor.continue();
[Worker] cursor.continue();
[Worker] cursor.continue();
[Worker] cursor.advance(1)
PASS [Worker] expected is "{\"key\":\"237-23-7736\",\"value\":{\"name\":\"Joe\",\"height\":65,\"weight\":150},\"primaryKey\":\"237-23-7736\"}"
[Worker] testAdvanceMultiple()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor()
[Worker] cursor.advance(3)
PASS [Worker] expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}"
[Worker] testAdvanceIndex()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor()
[Worker] cursor.advance(3)
PASS [Worker] expected is "{\"key\":\"Jef\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}"
[Worker] testAdvanceIndexNoDupe()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor(null, 'nextunique')
[Worker] cursor.advance(3)
PASS [Worker] expected is "{\"key\":130,\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}"
[Worker] testAdvanceIndexPrev()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor(null, 'prev')
[Worker] cursor.advance(3)
PASS [Worker] expected is "{\"key\":150,\"value\":{\"name\":\"Joe\",\"height\":65,\"weight\":150},\"primaryKey\":\"237-23-7736\"}"
[Worker] testAdvanceIndexPrevNoDupe()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor(null, 'prevunique')
[Worker] cursor.advance(3)
PASS [Worker] expected is "{\"key\":120,\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}"
[Worker] testAdvanceToEnd()
[Worker] trans = db.transaction(objectStoreName)
[Worker] store = trans.objectStore(objectStoreName)
[Worker] request = store.openCursor()
[Worker] cursor.advance(100)
PASS [Worker] expected is "null"
[Worker] testPrefetchInRange()
[Worker] trans = db.transaction(objectStoreName)
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] request = objectStore.openCursor()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}"
[Worker] cursor.advance(2)
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7737\",\"value\":{\"name\":\"Pat\",\"height\":65,\"weight\":100},\"primaryKey\":\"237-23-7737\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7738\",\"value\":{\"name\":\"Leo\",\"height\":65,\"weight\":180},\"primaryKey\":\"237-23-7738\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7739\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7740\",\"value\":{\"name\":\"Sam\",\"height\":71,\"weight\":110},\"primaryKey\":\"237-23-7740\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7741\",\"value\":{\"name\":\"Bug\",\"height\":63,\"weight\":100},\"primaryKey\":\"237-23-7741\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
[Worker] testPrefetchOutOfRange()
[Worker] trans = db.transaction(objectStoreName)
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] request = objectStore.openCursor()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}"
[Worker] cursor.advance(7)
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
PASS [Worker] expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}"
[Worker] cursor.continue()
[Worker] 
[Worker] prefetch():
[Worker] testBadAdvance()
[Worker] trans = db.transaction(objectStoreName, 'readwrite')
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] request = objectStore.openCursor()
[Worker] 
[Worker] advanceBadly():
[Worker] Expecting TypeError exception from cursor.advance(0)
PASS [Worker] Exception was thrown.
PASS [Worker] cursor.advance(0) threw TypeError: Failed to execute 'advance' on 'IDBCursor': A count argument with value 0 (zero) was supplied, must be greater than 0.
[Worker] Expecting TypeError exception from cursor.advance(-1)
PASS [Worker] Exception was thrown.
PASS [Worker] cursor.advance(-1) threw TypeError: Value -1 is outside the range [0, 4294967295]
[Worker] Expecting TypeError exception from cursor.advance(0x100000000)
PASS [Worker] Exception was thrown.
PASS [Worker] cursor.advance(0x100000000) threw TypeError: Value 4294967296 is outside the range [0, 4294967295]
[Worker] Expecting TypeError exception from cursor.advance(0x20000000000000)
PASS [Worker] Exception was thrown.
PASS [Worker] cursor.advance(0x20000000000000) threw TypeError: Value 9007199254740992 is outside the range [0, 4294967295]
[Worker] 
[Worker] testEdges():
[Worker] trans = db.transaction(objectStoreName, 'readonly')
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] request = objectStore.openCursor()
[Worker] 
[Worker] onSuccess():
[Worker] cursor = event.target.result
PASS [Worker] cursor is non-null.
[Worker] cursor.advance(0xffffffff)
[Worker] 
[Worker] onSuccess():
[Worker] cursor = event.target.result
PASS [Worker] cursor is null
[Worker] testDelete()
[Worker] trans = db.transaction(objectStoreName, 'readwrite')
[Worker] objectStore = trans.objectStore(objectStoreName)
[Worker] request = objectStore.openCursor()
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}"
[Worker] cursor.delete()
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7738\",\"value\":{\"name\":\"Leo\",\"height\":65,\"weight\":180},\"primaryKey\":\"237-23-7738\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7739\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7740\",\"value\":{\"name\":\"Sam\",\"height\":71,\"weight\":110},\"primaryKey\":\"237-23-7740\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7741\",\"value\":{\"name\":\"Bug\",\"height\":63,\"weight\":100},\"primaryKey\":\"237-23-7741\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS [Worker] expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}"
[Worker] cursor.advance(1)
[Worker] 
[Worker] deleteSecond():
PASS successfullyParsed is true

TEST COMPLETE

