| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test the basics of IndexedDB's IDBCursor objects."); |
| |
| indexedDBTest(prepareDatabase); |
| function prepareDatabase(evt) |
| { |
| preamble(evt); |
| db = event.target.result; |
| |
| evalAndLog("store = db.createObjectStore('storeName')"); |
| evalAndLog("index = store.createIndex('indexName', 'indexOn')"); |
| evalAndLog("store.put({indexOn: 'a'}, 0)"); |
| |
| request = evalAndLog("store.openCursor()"); |
| request.onsuccess = onStoreOpenCursor; |
| request.onerror = unexpectedErrorCallback; |
| |
| request = evalAndLog("index.openCursor()"); |
| request.onsuccess = onIndexOpenCursor; |
| request.onerror = unexpectedErrorCallback; |
| |
| request = evalAndLog("index.openKeyCursor()"); |
| request.onsuccess = onIndexOpenKeyCursor; |
| request.onerror = unexpectedErrorCallback; |
| |
| event.target.transaction.oncomplete = finishJSTest; |
| } |
| |
| function checkCursorProperties() { |
| shouldBeTrue("cursor instanceof IDBCursor"); |
| shouldBeTrue("'key' in cursor"); |
| shouldBeTrue("'primaryKey' in cursor"); |
| |
| shouldBeTrue("'continue' in cursor"); |
| shouldBeEqualToString("typeof cursor.continue", "function"); |
| shouldBeTrue("'continuePrimaryKey' in cursor"); |
| shouldBeEqualToString("typeof cursor.continuePrimaryKey", "function"); |
| shouldBeTrue("'advance' in cursor"); |
| shouldBeEqualToString("typeof cursor.advance", "function"); |
| shouldBeTrue("'update' in cursor"); |
| shouldBeEqualToString("typeof cursor.update", "function"); |
| shouldBeTrue("'delete' in cursor"); |
| shouldBeEqualToString("typeof cursor.delete", "function"); |
| } |
| |
| function onStoreOpenCursor(evt) { |
| preamble(evt); |
| evalAndLog("cursor = event.target.result"); |
| shouldBeNonNull("cursor"); |
| checkCursorProperties(); |
| |
| shouldBe("cursor.key", "0"); |
| shouldBe("cursor.primaryKey", "0"); |
| |
| shouldBeTrue("cursor instanceof IDBCursorWithValue"); |
| shouldBeTrue("'value' in cursor"); |
| shouldBeEqualToString("JSON.stringify(cursor.value)", '{"indexOn":"a"}'); |
| } |
| |
| function onIndexOpenCursor(evt) { |
| preamble(evt); |
| evalAndLog("cursor = event.target.result"); |
| shouldBeNonNull("cursor"); |
| checkCursorProperties(); |
| |
| shouldBeEqualToString("cursor.key", "a"); |
| shouldBe("cursor.primaryKey", "0"); |
| |
| shouldBeTrue("cursor instanceof IDBCursorWithValue"); |
| shouldBeTrue("'value' in cursor"); |
| shouldBeEqualToString("JSON.stringify(cursor.value)", '{"indexOn":"a"}'); |
| } |
| |
| function onIndexOpenKeyCursor(evt) { |
| preamble(evt); |
| evalAndLog("cursor = event.target.result"); |
| shouldBeNonNull("cursor"); |
| checkCursorProperties(); |
| |
| shouldBeEqualToString("cursor.key", "a"); |
| shouldBe("cursor.primaryKey", "0"); |
| |
| shouldBeFalse("cursor instanceof IDBCursorWithValue"); |
| shouldBe("cursor.primaryKey", "0"); |
| shouldBeFalse("'value' in cursor"); |
| } |
| |