| <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 KeyRange."); |
| if (window.layoutTestController) |
| layoutTestController.waitUntilDone(); |
| |
| function checkSingleKeyRange(value) |
| { |
| keyRange = evalAndLog("webkitIDBKeyRange.only(" + value + ")"); |
| shouldBe("keyRange.lower", "" + value); |
| shouldBe("keyRange.upper", "" + value); |
| shouldBeFalse("keyRange.lowerOpen"); |
| shouldBeFalse("keyRange.upperOpen"); |
| } |
| |
| function checkLowerBoundKeyRange(value, open) |
| { |
| keyRange = evalAndLog("webkitIDBKeyRange.lowerBound(" + value + "," + open + ")"); |
| shouldBe("keyRange.lower", "" + value); |
| if (open === undefined) |
| open = false; |
| shouldBe("keyRange.lowerOpen", "" + open); |
| shouldBeNull("keyRange.upper"); |
| shouldBeFalse("keyRange.upperOpen"); |
| } |
| |
| function checkUpperBoundKeyRange(value, open) |
| { |
| keyRange = evalAndLog("webkitIDBKeyRange.upperBound(" + value + "," + open + ")"); |
| shouldBe("keyRange.upper", "" + value); |
| if (open === undefined) |
| open = false; |
| shouldBe("keyRange.upperOpen", "" + open); |
| shouldBeNull("keyRange.lower"); |
| shouldBeFalse("keyRange.lowerOpen"); |
| } |
| |
| function checkBoundKeyRange(lower, upper, lowerOpen, upperOpen) |
| { |
| keyRange = evalAndLog("webkitIDBKeyRange.bound(" + lower + "," + upper + ", " + lowerOpen + ", " + upperOpen + ")"); |
| shouldBe("keyRange.lower", "" + lower); |
| shouldBe("keyRange.upper", "" + upper); |
| if (lowerOpen === undefined) |
| lowerOpen = false; |
| if (upperOpen === undefined) |
| upperOpen = false; |
| shouldBe("keyRange.lowerOpen", "" + lowerOpen); |
| shouldBe("keyRange.upperOpen", "" + upperOpen); |
| } |
| |
| function test() |
| { |
| shouldBeFalse("'lower' in webkitIDBKeyRange"); |
| shouldBeFalse("'upper' in webkitIDBKeyRange"); |
| shouldBeFalse("'lowerOpen' in webkitIDBKeyRange"); |
| shouldBeFalse("'upperOpen' in webkitIDBKeyRange"); |
| shouldBeTrue("'only' in webkitIDBKeyRange"); |
| shouldBeTrue("'lowerBound' in webkitIDBKeyRange"); |
| shouldBeTrue("'upperBound' in webkitIDBKeyRange"); |
| shouldBeTrue("'bound' in webkitIDBKeyRange"); |
| |
| debug(""); |
| |
| var instance = evalAndLog("instance = webkitIDBKeyRange.only(1)"); |
| shouldBeTrue("'lower' in instance"); |
| shouldBeTrue("'upper' in instance"); |
| shouldBeTrue("'lowerOpen' in instance"); |
| shouldBeTrue("'upperOpen' in instance"); |
| shouldBeFalse("'only' in instance"); |
| shouldBeFalse("'lowerBound' in instance"); |
| shouldBeFalse("'upperBound' in instance"); |
| shouldBeFalse("'bound' in instance"); |
| |
| debug(""); |
| |
| checkSingleKeyRange(1); |
| checkSingleKeyRange(3.14); |
| checkSingleKeyRange("'a'"); |
| |
| checkLowerBoundKeyRange(10, true); |
| checkLowerBoundKeyRange(11, false); |
| checkLowerBoundKeyRange(12); |
| checkLowerBoundKeyRange(10.1, true); |
| checkLowerBoundKeyRange(11.2, false); |
| checkLowerBoundKeyRange(12.3); |
| checkLowerBoundKeyRange("'aa'", true); |
| checkLowerBoundKeyRange("'ab'", false); |
| checkLowerBoundKeyRange("'ac'"); |
| |
| checkUpperBoundKeyRange(20, true); |
| checkUpperBoundKeyRange(21, false); |
| checkUpperBoundKeyRange(22); |
| checkUpperBoundKeyRange(20.2, true); |
| checkUpperBoundKeyRange(21.3, false); |
| checkUpperBoundKeyRange(22.4); |
| checkUpperBoundKeyRange("'ba'", true); |
| checkUpperBoundKeyRange("'bb'", false); |
| checkUpperBoundKeyRange("'bc'"); |
| |
| checkBoundKeyRange(30, 40); |
| checkBoundKeyRange(31, 41, false, false); |
| checkBoundKeyRange(32, 42, false, true); |
| checkBoundKeyRange(33, 43, true, false); |
| checkBoundKeyRange(34, 44, true, true); |
| |
| checkBoundKeyRange(30.1, 40.2); |
| checkBoundKeyRange(31.3, 41.4, false, false); |
| checkBoundKeyRange(32.5, 42.6, false, true); |
| checkBoundKeyRange(33.7, 43.8, true, false); |
| checkBoundKeyRange(34.9, 44.0, true, true); |
| |
| checkBoundKeyRange("'aaa'", "'aba'", false, false); |
| checkBoundKeyRange("'aab'", "'abb'"); |
| checkBoundKeyRange("'aac'", "'abc'", false, false); |
| checkBoundKeyRange("'aad'", "'abd'", false, true); |
| checkBoundKeyRange("'aae'", "'abe'", true, false); |
| checkBoundKeyRange("'aaf'", "'abf'", true, true); |
| |
| try { |
| debug("Passing an invalid key into only([])"); |
| webkitIDBKeyRange.only([]); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| |
| try { |
| debug("Passing an invalid key into upperBound([])"); |
| webkitIDBKeyRange.upperBound([]); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| |
| try { |
| debug("Passing an invalid key into lowerBound([])"); |
| webkitIDBKeyRange.lowerBound([]); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| |
| try { |
| debug("Passing an invalid key into bound(null, [])"); |
| webkitIDBKeyRange.bound(null, []); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| |
| try { |
| debug("Passing an invalid key into bound([],null)"); |
| webkitIDBKeyRange.bound([], null); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| |
| try { |
| debug("Passing an invalid key into bound([], [])"); |
| webkitIDBKeyRange.bound([], []); |
| testFailed("No exception thrown"); |
| } catch (e) { |
| testPassed("Caught exception: " + e.toString()); |
| } |
| } |
| |
| test(); |
| |
| var successfullyParsed = true; |
| done(); |
| |
| </script> |
| </body> |
| </html> |