| Test IndexedDB's cursor mutation |
| |
| 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) |
| |
| setupObjectStoreAndCreateIndex(): |
| objectStore = db.createObjectStore('foo', { keyPath: 'ss' }) |
| index = objectStore.createIndex('name', 'name', { unique: true }) |
| objectStoreData = [ |
| { ss: '237-23-7732', name: 'Bob' }, |
| { ss: '237-23-7733', name: 'Ann' }, |
| { ss: '237-23-7734', name: 'Ron' }, |
| { ss: '237-23-7735', name: 'Sue' }, |
| { ss: '237-23-7736', name: 'Joe' }, |
| { ss: '237-23-7737', name: 'Pat' } |
| ] |
| objectStore.add(objectStoreData[0]) |
| objectStore.add(objectStoreData[1]) |
| objectStore.add(objectStoreData[2]) |
| objectStore.add(objectStoreData[3]) |
| objectStore.add(objectStoreData[4]) |
| |
| setupCursor(): |
| count = 0 |
| sawAdded = false |
| sawRemoved = false |
| request = objectStore.openCursor() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Bob" |
| sawRemoved = true |
| count++ |
| cursor.continue() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Ann" |
| count++ |
| cursor.continue() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Ron" |
| count++ |
| cursor.continue() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Sue" |
| count++ |
| cursor.continue() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Joe" |
| count++ |
| cursor.continue() |
| |
| iterateCursor(): |
| cursor = event.target.result |
| |
| checkCursorResults(): |
| PASS count is objectStoreData.length - 1 |
| PASS sawAdded is false |
| PASS sawRemoved is true |
| |
| setupMutatingCursor(): |
| count = 0 |
| sawAdded = false |
| sawRemoved = false |
| [objectStoreDataNameSort is an array of indexes into objectStoreData in alphabetical order by name] |
| objectStoreDataNameSort = [ 1, 4, 5, 2, 3 ] |
| |
| trans = db.transaction('foo', 'readwrite') |
| objectStore = trans.objectStore('foo') |
| request = objectStore.index('name').openCursor() |
| trans.oncomplete = checkMutatingCursorResults |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Ann" |
| count++ |
| |
| Mutating the object store: |
| Removing Bob |
| request = objectStore.delete(objectStoreData[0].ss) |
| |
| addFinalData(): |
| Adding Pat |
| request = objectStore.add(objectStoreData[objectStoreData.length - 1]) |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Joe" |
| count++ |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Pat" |
| sawAdded = true |
| count++ |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Ron" |
| count++ |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| PASS cursor.value.name is "Sue" |
| count++ |
| |
| iterateMutatingCursor(): |
| cursor = event.target.result |
| |
| checkMutatingCursorResults(): |
| PASS count is objectStoreData.length - 1 |
| PASS sawAdded is true |
| PASS sawRemoved is false |
| PASS successfullyParsed is true |
| |
| TEST COMPLETE |
| |