| Test IndexedDB's cursor value property. |
| |
| 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('store') |
| |
| testCursor(): |
| transaction = db.transaction('store', 'readwrite') |
| store = transaction.objectStore('store') |
| store.put({a: 1, b: 10}, 'key1') |
| store.put({a: 2, b: 20}, 'key2') |
| store.put({a: 3, b: 30}, 'key3') |
| store.put({a: 4, b: 40}, 'key4') |
| store.put({a: 5, b: 50}, 'key5') |
| request = store.openCursor() |
| |
| ---------- |
| Value at index: 0 |
| cursor = request.result |
| PASS cursor.key is expectedKey |
| |
| Check expected values: |
| PASS cursor.value.a is expectedA |
| PASS cursor.value.b is expectedB |
| PASS cursor.value.foo is undefined |
| |
| Modify values: |
| cursor.value.a = 3 |
| delete cursor.value.b |
| cursor.value.foo = 'bar' |
| |
| Ensure modifications are retained: |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object value survives gc |
| gc() |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object identity |
| localValueRef = cursor.value |
| PASS localValueRef is cursor.value |
| |
| ---------- |
| Value at index: 1 |
| cursor = request.result |
| PASS cursor.key is expectedKey |
| |
| Check expected values: |
| PASS cursor.value.a is expectedA |
| PASS cursor.value.b is expectedB |
| PASS cursor.value.foo is undefined |
| |
| Modify values: |
| cursor.value.a = 3 |
| delete cursor.value.b |
| cursor.value.foo = 'bar' |
| |
| Ensure modifications are retained: |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object value survives gc |
| gc() |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object identity |
| localValueRef = cursor.value |
| PASS localValueRef is cursor.value |
| |
| ---------- |
| Value at index: 3 |
| cursor = request.result |
| PASS cursor.key is expectedKey |
| |
| Check expected values: |
| PASS cursor.value.a is expectedA |
| PASS cursor.value.b is expectedB |
| PASS cursor.value.foo is undefined |
| |
| Modify values: |
| cursor.value.a = 3 |
| delete cursor.value.b |
| cursor.value.foo = 'bar' |
| |
| Ensure modifications are retained: |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object value survives gc |
| gc() |
| PASS cursor.value.a is 3 |
| PASS cursor.value.b is undefined |
| PASS cursor.value.foo is 'bar' |
| |
| Check object identity |
| localValueRef = cursor.value |
| PASS localValueRef is cursor.value |
| |
| ensureModificationsNotPersisted(): |
| transaction = db.transaction('store', 'readonly') |
| store = transaction.objectStore('store') |
| request = store.openCursor() |
| cursor = request.result |
| PASS cursor.key is 'key1' |
| |
| Check expected values: |
| PASS cursor.value.a is 1 |
| PASS cursor.value.b is 10 |
| PASS cursor.value.foo is undefined |
| PASS successfullyParsed is true |
| |
| TEST COMPLETE |
| |