Test IndexedDB: iterating through index cursors with keys and key ranges 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(objectStoreName); First, add all our data to the object store. request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); Now create the indexes. objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); PASS objectStore.indexNames.length is indexData.length objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); PASS objectStore.indexNames.length is indexData.length PASS found is true index = objectStore.index(indexData[i].name); PASS index.name is indexData[i].name PASS index.keyPath is indexData[i].keyPath PASS index.unique is true PASS found is true index = objectStore.index(indexData[i].name); PASS index.name is indexData[i].name PASS index.keyPath is indexData[i].keyPath PASS index.unique is false PASS found is true index = objectStore.index(indexData[i].name); PASS index.name is indexData[i].name PASS index.keyPath is indexData[i].keyPath PASS index.unique is false request = objectStore.index('name').getKey('Bob'); PASS event.target.result is '237-23-7732' request = objectStore.index('name').get('Bob'); PASS event.target.result.name is 'Bob' PASS event.target.result.height is 60 PASS event.target.result.weight is 120 request = objectStore.index('name').openKeyCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS 'value' in cursor is false keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreData.length request = objectStore.index('weight').openKeyCursor(null, 'next'); cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataWeightSort[keyIndex].value.weight PASS cursor.primaryKey is objectStoreDataWeightSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreData.length objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); keyIndex = objectStoreDataNameSort.length - 1; request = objectStore.index('name').openKeyCursor(null, 'prev'); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex--; cursor = event.target.result; PASS keyIndex is -1 keyRange = IDBKeyRange.bound('Bob', 'Ron'); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 2; keyRange = IDBKeyRange.bound('Bob', 'Ron', true); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 1; keyRange = IDBKeyRange.bound('Bob', 'Ron', false, true); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 2; keyRange = IDBKeyRange.bound('Bob', 'Ron', true, true); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 1; keyRange = IDBKeyRange.lowerBound('Bob'); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreDataNameSort.length keyIndex = 2; keyRange = IDBKeyRange.lowerBound('Bob', true); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreDataNameSort.length keyIndex = 0; keyRange = IDBKeyRange.upperBound('Joe'); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 3 keyIndex = 0; keyRange = IDBKeyRange.upperBound('Joe', true); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 2 keyIndex = 3; keyRange = IDBKeyRange.only('Pat'); request = objectStore.index('name').openKeyCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 0; request = objectStore.index('name').openCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreDataNameSort.length keyIndex = objectStoreDataNameSort.length - 1; request = objectStore.index('name').openCursor(null, 'prev'); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS keyIndex is -1 keyIndex = 1; keyRange = IDBKeyRange.bound('Bob', 'Ron'); request = objectStore.index('name').openCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 2; keyRange = IDBKeyRange.bound('Bob', 'Ron', true); request = objectStore.index('name').openCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 1; keyRange = IDBKeyRange.bound('Bob', 'Ron', false, true); request = objectStore.index('name').openCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 2; keyRange = IDBKeyRange.bound('Bob', 'Ron', true, true); request = objectStore.index('name').openCursor(keyRange); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 4; keyRange = IDBKeyRange.bound('Bob', 'Ron'); request = objectStore.index('name').openCursor(keyRange, 'prev'); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex--; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex--; cursor = event.target.result; PASS keyIndex is 0 keyIndex = 3; keyRange = IDBKeyRange.only(65); request = objectStore.index('height').openKeyCursor(keyRange, 'next'); cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 3; keyRange = IDBKeyRange.only(65); request = objectStore.index('height').openKeyCursor(keyRange, 'nextunique'); cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 3; keyRange = IDBKeyRange.only(65); request = objectStore.index('height').openCursor(keyRange, 'next'); cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key PASS cursor.value.name is objectStoreDataHeightSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataHeightSort[keyIndex].value.weight cursor.continue(); keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key PASS cursor.value.name is objectStoreDataHeightSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataHeightSort[keyIndex].value.weight cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 5 keyIndex = 3; keyRange = IDBKeyRange.only(65); request = objectStore.index('height').openCursor(keyRange, 'nextunique'); cursor = event.target.result; PASS cursor.key is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.primaryKey is objectStoreDataHeightSort[keyIndex].key PASS cursor.value.name is objectStoreDataHeightSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataHeightSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataHeightSort[keyIndex].value.weight cursor.continue(); keyIndex++; cursor = event.target.result; PASS keyIndex is 4 keyIndex = 0; request = objectStore.index('name').openKeyCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(nextKey); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex = 3; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreData.length keyIndex = 0; request = objectStore.index('name').openKeyCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(nextKey); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key cursor = event.target.result; PASS keyIndex is objectStoreData.length keyIndex = 0; request = objectStore.index('name').openCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(nextKey); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex = 3; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Pat' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight keyIndex++; cursor = event.target.result; PASS keyIndex is objectStoreDataNameSort.length keyIndex = 0; request = objectStore.index('name').openCursor(); cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(nextKey); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight nextKey = !keyIndex ? 'Flo' : undefined; cursor.continue(); PASS cursor.key is objectStoreDataNameSort[keyIndex].value.name PASS cursor.primaryKey is objectStoreDataNameSort[keyIndex].key PASS cursor.value.name is objectStoreDataNameSort[keyIndex].value.name PASS cursor.value.height is objectStoreDataNameSort[keyIndex].value.height PASS cursor.value.weight is objectStoreDataNameSort[keyIndex].value.weight cursor = event.target.result; PASS keyIndex is objectStoreDataNameSort.length PASS successfullyParsed is true TEST COMPLETE