| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test that continue() calls against cursors are validated by direction."); |
| |
| indexedDBTest(prepareDatabase, testCursors); |
| function prepareDatabase() |
| { |
| db = event.target.result; |
| evalAndLog("store = db.createObjectStore('store')"); |
| for (i = 1; i <= 10; ++i) { |
| evalAndLog("store.put(" + i + "," + i + ")"); |
| } |
| } |
| |
| function testCursors() |
| { |
| evalAndLog("trans = db.transaction('store')"); |
| evalAndLog("store = trans.objectStore('store')"); |
| testForwardCursor(); |
| } |
| |
| function testForwardCursor() |
| { |
| evalAndLog("request = store.openCursor(IDBKeyRange.bound(-Infinity, Infinity), 'next')"); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function() { |
| evalAndLog("cursor = request.result"); |
| shouldBeNonNull("cursor"); |
| debug("Expect DataError if: The parameter is less than or equal to this cursor's position and this cursor's direction is \"next\" or \"nextunique\"."); |
| shouldBe("cursor.key", "1"); |
| evalAndExpectException("cursor.continue(-1)", "0", "'DataError'"); |
| |
| testReverseCursor(); |
| }; |
| } |
| |
| function testReverseCursor() |
| { |
| evalAndLog("request = store.openCursor(IDBKeyRange.bound(-Infinity, Infinity), 'prev')"); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function() { |
| evalAndLog("cursor = request.result"); |
| shouldBeNonNull("cursor"); |
| debug("Expect DataError if: The parameter is greater than or equal to this cursor's position and this cursor's direction is \"prev\" or \"prevunique\"."); |
| shouldBe("cursor.key", "10"); |
| evalAndExpectException("cursor.continue(11)", "0", "'DataError'"); |
| |
| finishJSTest(); |
| }; |
| } |