diff options
author | Steve Block <steveblock@google.com> | 2010-09-29 17:32:26 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-09-29 17:35:08 +0100 |
commit | 68513a70bcd92384395513322f1b801e7bf9c729 (patch) | |
tree | 161b50f75a5921d61731bb25e730005994fcec85 /LayoutTests/storage | |
parent | fd5c6425ce58eb75211be7718d5dee960842a37e (diff) | |
download | external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.zip external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.gz external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.bz2 |
Merge WebKit at r67908: Initial merge by Git
Change-Id: I43a553e7b3299b28cb6ee8aa035ed70fe342b972
Diffstat (limited to 'LayoutTests/storage')
-rw-r--r-- | LayoutTests/storage/indexeddb/index-basics-expected.txt | 331 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/index-basics.html | 217 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/index-cursor-expected.txt | 2111 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/index-cursor.html | 238 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/objectstore-basics-expected.txt | 23 | ||||
-rw-r--r-- | LayoutTests/storage/indexeddb/objectstore-basics.html | 15 |
6 files changed, 2933 insertions, 2 deletions
diff --git a/LayoutTests/storage/indexeddb/index-basics-expected.txt b/LayoutTests/storage/indexeddb/index-basics-expected.txt new file mode 100644 index 0000000..a99bc86 --- /dev/null +++ b/LayoutTests/storage/indexeddb/index-basics-expected.txt @@ -0,0 +1,331 @@ +Test the basics of IndexedDB's IDBIndex. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +indexedDB.open('name', 'description') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +db.createObjectStore('storeName', null) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +store = event.result +event.result.createIndex('indexName', 'x') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +indexObject = event.result +PASS 'name' in indexObject is true +PASS indexObject.name is "indexName" +PASS 'storeName' in indexObject is true +PASS indexObject.storeName is "storeName" +PASS 'keyPath' in indexObject is true +PASS indexObject.keyPath is "x" +PASS 'unique' in indexObject is true +PASS indexObject.unique is false +PASS 'openObjectCursor' in indexObject is true +PASS 'openCursor' in indexObject is true +PASS 'getObject' in indexObject is true +PASS 'get' in indexObject is true +event.source.add({x: 'value', y: 'zzz'}, 'key') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +event.source.add({x: 'value2', y: 'zzz2'}, 'key2') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +indexObject.get('value') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result is "key" +indexObject.getObject('value') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result.x is "value" +PASS event.result.y is "zzz" +indexObject.get('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is IDBDatabaseException.NOT_FOUND_ERR +indexObject.getObject('does not exist') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is IDBDatabaseException.NOT_FOUND_ERR +indexObject.openCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value is "key" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value is "key2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +indexObject.openObjectCursor() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value" +PASS event.result.value.x is "value" +PASS event.result.value.y is "zzz" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is false +PASS event.result.key is "value2" +PASS event.result.value.x is "value2" +PASS event.result.value.y is "zzz2" +event.result.continue() +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.result === null is true +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/index-basics.html b/LayoutTests/storage/indexeddb/index-basics.html new file mode 100644 index 0000000..c23f141 --- /dev/null +++ b/LayoutTests/storage/indexeddb/index-basics.html @@ -0,0 +1,217 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test the basics of IndexedDB's IDBIndex."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +function test() +{ + result = evalAndLog("indexedDB.open('name', 'description')"); + verifyResult(result); + result.onsuccess = createObjectStore; + result.onerror = unexpectedErrorCallback; +} + +function createObjectStore() +{ + verifySuccessEvent(event); + db = evalAndLog("db = event.result"); + + deleteAllObjectStores(db); + + result = evalAndLog("db.createObjectStore('storeName', null)"); + verifyResult(result); + result.onsuccess = createIndex; + result.onerror = unexpectedErrorCallback; +} + +function createIndex() +{ + verifySuccessEvent(event); + window.store = evalAndLog("store = event.result"); + + result = evalAndLog("event.result.createIndex('indexName', 'x')"); + verifyResult(result); + result.onsuccess = addData; + result.onerror = unexpectedErrorCallback; +} + +function addData() +{ + verifySuccessEvent(event); + shouldBeFalse("event.result === null"); + window.indexObject = evalAndLog("indexObject = event.result"); + shouldBeTrue("'name' in indexObject"); + shouldBeEqualToString("indexObject.name", "indexName"); + shouldBeTrue("'storeName' in indexObject"); + shouldBeEqualToString("indexObject.storeName", "storeName"); + shouldBeTrue("'keyPath' in indexObject"); + shouldBeEqualToString("indexObject.keyPath", "x"); + shouldBeTrue("'unique' in indexObject"); + shouldBeFalse("indexObject.unique"); + shouldBeTrue("'openObjectCursor' in indexObject"); + shouldBeTrue("'openCursor' in indexObject"); + shouldBeTrue("'getObject' in indexObject"); + shouldBeTrue("'get' in indexObject"); + + result = evalAndLog("event.source.add({x: 'value', y: 'zzz'}, 'key')"); + verifyResult(result); + result.onsuccess = addMore; + result.onerror = unexpectedErrorCallback; +} + +function addMore() +{ + verifySuccessEvent(event); + + result = evalAndLog("event.source.add({x: 'value2', y: 'zzz2'}, 'key2')"); + verifyResult(result); + result.onsuccess = getData; + result.onerror = unexpectedErrorCallback; +} + +function getData() +{ + verifySuccessEvent(event); + + result = evalAndLog("indexObject.get('value')"); + verifyResult(result); + result.onsuccess = getObjectData; + result.onerror = unexpectedErrorCallback; +} + +function getObjectData() +{ + verifySuccessEvent(event); + shouldBeEqualToString("event.result", "key"); + + result = evalAndLog("indexObject.getObject('value')"); + verifyResult(result); + result.onsuccess = getDataFail; + result.onerror = unexpectedErrorCallback; +} + +function getDataFail() +{ + verifySuccessEvent(event); + shouldBeEqualToString("event.result.x", "value"); + shouldBeEqualToString("event.result.y", "zzz"); + + result = evalAndLog("indexObject.get('does not exist')"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = getObjectDataFail; +} + +function getObjectDataFail() +{ + verifyErrorEvent(event); + shouldBe("event.code", "IDBDatabaseException.NOT_FOUND_ERR"); + + result = evalAndLog("indexObject.getObject('does not exist')"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = openCursor; +} + +function openCursor() +{ + verifyErrorEvent(event); + shouldBe("event.code", "IDBDatabaseException.NOT_FOUND_ERR"); + + window.result = evalAndLog("indexObject.openCursor()"); + verifyResult(result); + result.onsuccess = cursor1Continue; + result.onerror = unexpectedErrorCallback; +} + +function cursor1Continue() +{ + verifySuccessEvent(event); + shouldBeFalse("event.result === null"); + shouldBeEqualToString("event.result.key", "value"); + shouldBeEqualToString("event.result.value", "key"); + + // We re-use the last result object. + evalAndLog("event.result.continue()"); + verifyResult(window.result); + window.result.onsuccess = cursor1Continue2; +} + +function cursor1Continue2() +{ + verifySuccessEvent(event); + shouldBeFalse("event.result === null"); + shouldBeEqualToString("event.result.key", "value2"); + shouldBeEqualToString("event.result.value", "key2"); + + // We re-use the last result object. + evalAndLog("event.result.continue()"); + verifyResult(window.result); + window.result.onsuccess = openObjectCursor; +} + +function openObjectCursor() +{ + verifySuccessEvent(event); + shouldBeTrue("event.result === null"); + + window.result = evalAndLog("indexObject.openObjectCursor()"); + verifyResult(result); + result.onsuccess = cursor2Continue; + result.onerror = unexpectedErrorCallback; +} + +function cursor2Continue() +{ + verifySuccessEvent(event); + shouldBeFalse("event.result === null"); + shouldBeEqualToString("event.result.key", "value"); + shouldBeEqualToString("event.result.value.x", "value"); + shouldBeEqualToString("event.result.value.y", "zzz"); + + // We re-use the last result object. + evalAndLog("event.result.continue()"); + verifyResult(window.result); + window.result.onsuccess = cursor2Continue2; +} + +function cursor2Continue2() +{ + verifySuccessEvent(event); + shouldBeFalse("event.result === null"); + shouldBeEqualToString("event.result.key", "value2"); + shouldBeEqualToString("event.result.value.x", "value2"); + shouldBeEqualToString("event.result.value.y", "zzz2"); + + // We re-use the last result object. + evalAndLog("event.result.continue()"); + verifyResult(window.result); + window.result.onsuccess = last; +} + +function last() +{ + verifySuccessEvent(event); + shouldBeTrue("event.result === null"); + + done(); +} + +test(); + +var successfullyParsed = true; + +</script> +</body> +</html> diff --git a/LayoutTests/storage/indexeddb/index-cursor-expected.txt b/LayoutTests/storage/indexeddb/index-cursor-expected.txt new file mode 100644 index 0000000..1442ad4 --- /dev/null +++ b/LayoutTests/storage/indexeddb/index-cursor-expected.txt @@ -0,0 +1,2111 @@ +Test IndexedDB's IDBIndex.openCursor + the cursor it produces in depth. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +indexedDB.open('someDB', 'some description') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +db.createObjectStore('someObjectStore') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore = event.result +objectStore.createIndex('someIndex', 'x') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +indexObject = event.result +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +objectStore.add({'x': testData[nextToAdd]}, nextToAdd) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +Scheduling tests... +Running tests... + +Next test: lower open bound is 0; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 0; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 0; sorted ascending. +PASS event.result is null + +Next test: upper bound is 0; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result is null + +Next test: lower open bound is 0; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 0; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper open bound is 0; sorted descending. +PASS event.result is null + +Next test: upper bound is 0; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 0; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 0; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 0; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 0; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 0; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 0; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 0; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower bound is 0; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 0; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 0; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 0; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 0; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 0; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 0; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 0; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower bound is 0; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 1; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 1; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 1; sorted ascending. +PASS event.result is null + +Next test: upper bound is 1; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result is null + +Next test: lower open bound is 1; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 1; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper open bound is 1; sorted descending. +PASS event.result is null + +Next test: upper bound is 1; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 1; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 1; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 1; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 1; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 1; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 1; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 1; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower bound is 1; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 1; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 1; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 1; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 1; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 1; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 1; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 1; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower bound is 1; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 2; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 2; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 2; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result is null + +Next test: upper bound is 2; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result is null + +Next test: lower open bound is 2; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 2; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: upper open bound is 2; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 2; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 2; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 2; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 2; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 2; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 2; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 2; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 2; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 2; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 2; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 2; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 2; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 2; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 2; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 2; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 2; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 2; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 3; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 3; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 3; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result is null + +Next test: upper bound is 3; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result is null + +Next test: lower open bound is 3; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 3; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: upper open bound is 3; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 3; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 3; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 3; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 3; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 3; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 3; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 3; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 3; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 3; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 3; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 3; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 3; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 3; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 3; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 3; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 3; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower bound is 3; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result is null + +Next test: lower open bound is 4; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 4; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 4; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result is null + +Next test: upper bound is 4; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 4; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 4; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: upper open bound is 4; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 4; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 4; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 4; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 4; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 4; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 4; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 4; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 4; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 4; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 4; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 4; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 4; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 4; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 4; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 4; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 4; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower bound is 4; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: lower open bound is 5; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 5; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 5; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result is null + +Next test: upper bound is 5; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 5; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower bound is 5; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: upper open bound is 5; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 5; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 5; upper open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 5; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 5; upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 5; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 5; upper open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower open bound is 5; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower bound is 5; upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 5; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 5; upper open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 5; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower bound is 5; upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 5; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 5; upper open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower open bound is 5; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower bound is 5; upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower bound is 5; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: lower open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: upper open bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 6; upper open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 6; upper bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower bound is 6; upper open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower bound is 6; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 6; upper open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower open bound is 6; upper bound is 6; sorted descending. +PASS event.result is null + +Next test: lower bound is 6; upper open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower bound is 6; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower open bound is 6; upper open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 6; upper bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower bound is 6; upper open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower bound is 6; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 6; upper open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower open bound is 6; upper bound is 7; sorted descending. +PASS event.result is null + +Next test: lower bound is 6; upper open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower bound is 6; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: upper open bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result is null + +Next test: upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: upper open bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[5] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[4] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[3] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[2] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[1] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[0] +PASS event.result is null + +Next test: lower open bound is 7; upper open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 7; upper bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower bound is 7; upper open bound is 6; sorted ascending. +PASS event.result is null + +Next test: lower bound is 7; upper bound is 6; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 7; upper open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower open bound is 7; upper bound is 6; sorted descending. +PASS event.result is null + +Next test: lower bound is 7; upper open bound is 6; sorted descending. +PASS event.result is null + +Next test: lower bound is 7; upper bound is 6; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null + +Next test: lower open bound is 7; upper open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower open bound is 7; upper bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower bound is 7; upper open bound is 7; sorted ascending. +PASS event.result is null + +Next test: lower bound is 7; upper bound is 7; sorted ascending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result is null + +Next test: lower open bound is 7; upper open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower open bound is 7; upper bound is 7; sorted descending. +PASS event.result is null + +Next test: lower bound is 7; upper open bound is 7; sorted descending. +PASS event.result is null + +Next test: lower bound is 7; upper bound is 7; sorted descending. +PASS event.result.value is expectedIndex +PASS event.result.key is testData[7] +PASS event.result.value is expectedIndex +PASS event.result.key is testData[6] +PASS event.result is null +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/index-cursor.html b/LayoutTests/storage/indexeddb/index-cursor.html new file mode 100644 index 0000000..9541d60 --- /dev/null +++ b/LayoutTests/storage/indexeddb/index-cursor.html @@ -0,0 +1,238 @@ +<html> +<head> +<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> +<script src="../../fast/js/resources/js-test-pre.js"></script> +<script src="../../fast/js/resources/js-test-post-function.js"></script> +<script src="resources/shared.js"></script> +</head> +<body> +<p id="description"></p> +<div id="console"></div> +<script> + +description("Test IndexedDB's IDBIndex.openCursor + the cursor it produces in depth."); +if (window.layoutTestController) + layoutTestController.waitUntilDone(); + +// In order of how it should be sorted by IndexedDB. +window.testData = [ + null, + null, + 2, + 2, + 10, + // FIXME: Dates. + "A big string", + "the BIGEST string", + "the BIGEST string" +]; + +function openDatabase() +{ + result = evalAndLog("indexedDB.open('someDB', 'some description')"); + verifyResult(result); + result.onsuccess = openObjectStore; + result.onerror = unexpectedErrorCallback; +} + +function openObjectStore() +{ + verifySuccessEvent(event); + window.db = evalAndLog("db = event.result"); + + deleteAllObjectStores(db); + + result = evalAndLog("db.createObjectStore('someObjectStore')"); + verifyResult(result); + result.onsuccess = openIndex; + result.onerror = unexpectedErrorCallback; +} + +function openIndex() +{ + verifySuccessEvent(event); + window.objectStore = evalAndLog("objectStore = event.result"); + + result = evalAndLog("objectStore.createIndex('someIndex', 'x')"); + verifyResult(result); + result.onsuccess = startAddingData; + result.onerror = unexpectedErrorCallback; +} + +function startAddingData() +{ + verifySuccessEvent(event); + window.indexObject = evalAndLog("indexObject = event.result"); + + window.nextToAdd = 0; + addData(); +} + +function addData() +{ + // We cheat when called for the first time; we're in the context of the objectStore success event. + verifySuccessEvent(event); + + result = evalAndLog("objectStore.add({'x': testData[nextToAdd]}, nextToAdd)"); + verifyResult(result); + result.onsuccess = ++window.nextToAdd < testData.length ? addData : scheduleTests; +} + +function scheduleTests() +{ + debug("Scheduling tests..."); + window.scheduledTests = []; + for (var i = 0; i < testData.length; ++i) { + /* left bound, is open, right bound, is open, ascending */ + scheduledTests.unshift([i, true, null, null, true]); + scheduledTests.unshift([i, false, null, null, true]); + scheduledTests.unshift([null, null, i, true, true]); + scheduledTests.unshift([null, null, i, false, true]); + scheduledTests.unshift([i, true, null, null, false]); + scheduledTests.unshift([i, false, null, null, false]); + scheduledTests.unshift([null, null, i, true, false]); + scheduledTests.unshift([null, null, i, false, false]); + for (var j = 6; j < testData.length; ++j) { + scheduledTests.unshift([i, true, j, true, true]); + scheduledTests.unshift([i, true, j, false, true]); + scheduledTests.unshift([i, false, j, true, true]); + scheduledTests.unshift([i, false, j, false, true]); + scheduledTests.unshift([i, true, j, true, false]); + scheduledTests.unshift([i, true, j, false, false]); + scheduledTests.unshift([i, false, j, true, false]); + scheduledTests.unshift([i, false, j, false, false]); + } + } + + debug("Running tests..."); + setTimeout(runNextTest, 0); +} + +function runNextTest() +{ + if (!scheduledTests.length) { + done(); + return; + } + + var test = scheduledTests.pop(); + window.lower = test[0]; + window.lowerIsOpen = test[1]; + window.upper = test[2]; + window.upperIsOpen = test[3]; + window.ascending = test[4]; + + str = "Next test: "; + if (lower !== null) { + str += "lower "; + if (lowerIsOpen) + str += "open "; + str += "bound is " + lower + "; "; + } + if (upper !== null) { + str += "upper "; + if (upperIsOpen) + str += "open "; + str += "bound is " + upper + "; "; + } + if (ascending) + str += "sorted ascending."; + else + str += "sorted descending."; + + debug(""); + debug(str); + + // Work around for duplicate values. + if (upper !== null) { + if (upperIsOpen) { + while (upper > 0 && testData[upper] === testData[upper - 1]) + --window.upper; + } else { + while (upper < testData.length - 1 && testData[upper] === testData[upper + 1]) + ++window.upper; + } + } + if (lower !== null) { + if (lowerIsOpen) { + while (lower < testData.length - 1 && testData[lower] === testData[lower + 1]) + ++window.lower; + } else { + while (lower > 0 && testData[lower] === testData[lower - 1]) + --window.lower; + } + } + + if (ascending) { + if (lower !== null) { + if (!lowerIsOpen) + window.expectedIndex = lower; + else + window.expectedIndex = lower + 1; + } else + window.expectedIndex = 0; + } else { + if (upper !== null) { + if (!upperIsOpen) + window.expectedIndex = upper; + else + window.expectedIndex = upper - 1; + } else + window.expectedIndex = testData.length - 1; + } + testWithinBounds(); + + var keyRange; + if (lower !== null && upper !== null) + keyRange = IDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen); + else if (lower !== null) + keyRange = IDBKeyRange.leftBound(testData[lower], lowerIsOpen); + else + keyRange = IDBKeyRange.rightBound(testData[upper], upperIsOpen); + + var request = indexObject.openCursor(keyRange, ascending ? IDBCursor.NEXT : IDBCursor.PREV); + request.onsuccess = cursorIteration; + request.onerror = unexpectedErrorCallback; +} + +function testWithinBounds() +{ + if (expectedIndex < 0 || testData.length <= expectedIndex) + window.expectedIndex = null; + if (lower !== null && expectedIndex < lower) + window.expectedIndex = null; + if (upper !== null && upper < expectedIndex) + window.expectedIndex = null; + if (lower !== null && lowerIsOpen && expectedIndex <= lower) + window.expectedIndex = null; + if (upper !== null && upperIsOpen && upper <= expectedIndex) + window.expectedIndex = null; +} + +function cursorIteration() +{ + if (expectedIndex === null) { + shouldBeNull("event.result"); + setTimeout(runNextTest, 0); + return; + } + if (event.result === null) { + testFailed("Event.result should not be null.") + setTimeout(runNextTest, 0); + return; + } + + shouldBe("event.result.value", "expectedIndex"); + shouldBe("event.result.key", "testData[" + expectedIndex + "]"); + window.expectedIndex = ascending ? expectedIndex + 1 : expectedIndex - 1; + testWithinBounds(); + + event.result.continue(); +} + +openDatabase(); // The first step. +var successfullyParsed = true; + +</script> +</body> +</html> diff --git a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt index a60e857..890c00f 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt @@ -50,7 +50,7 @@ PASS store.name is "storeName" PASS store.keyPath is null PASS storeNames.contains('storeName') is true PASS storeNames.length is 1 -event.result.createIndex('indexName', 'x') +event.result.createIndex('indexName', 'x', true) PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'abort' in result is true @@ -92,6 +92,27 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result is "key" +event.source.add({x: 'value'}, 'zzz') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'abort' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +addAgainFailure(): +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'abort' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is IDBDatabaseException.UNKNOWN_ERR store = event.source store.get('key') PASS 'onsuccess' in result is true diff --git a/LayoutTests/storage/indexeddb/objectstore-basics.html b/LayoutTests/storage/indexeddb/objectstore-basics.html index 8b696c4..731d421 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics.html +++ b/LayoutTests/storage/indexeddb/objectstore-basics.html @@ -49,7 +49,7 @@ function createSuccess() shouldBe("storeNames.length", "1"); // FIXME: test all of object store's methods. - result = evalAndLog("event.result.createIndex('indexName', 'x')"); + result = evalAndLog("event.result.createIndex('indexName', 'x', true)"); // true == unique requirement. verifyResult(result); result.onsuccess = addIndexSuccess; result.onerror = unexpectedErrorCallback; @@ -72,6 +72,19 @@ function addSuccess() debug("addSuccess():"); verifySuccessEvent(event); shouldBeEqualToString("event.result", "key"); + + result = evalAndLog("event.source.add({x: 'value'}, 'zzz')"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = addAgainFailure; +} + +function addAgainFailure() +{ + debug("addAgainFailure():"); + verifyErrorEvent(event); + // FIXME: This error code needs to be specced. + shouldBe("event.code", "IDBDatabaseException.UNKNOWN_ERR"); var store = evalAndLog("store = event.source"); result = evalAndLog("store.get('key')"); |