3 <script src="../../fast/js/resources/js-test-pre.js"></script>
4 <script src="resources/shared.js"></script>
7 <p id="description"></p>
8 <div id="console"></div>
11 description("Test IndexedDB's KeyRange.");
12 if (window.layoutTestController)
13 layoutTestController.waitUntilDone();
15 function checkSingleKeyRange(value)
17 keyRange = evalAndLog("webkitIDBKeyRange.only(" + value + ")");
18 shouldBe("keyRange.lower", "" + value);
19 shouldBe("keyRange.upper", "" + value);
20 shouldBeFalse("keyRange.lowerOpen");
21 shouldBeFalse("keyRange.upperOpen");
24 function checkLowerBoundKeyRange(value, open)
26 keyRange = evalAndLog("webkitIDBKeyRange.lowerBound(" + value + "," + open + ")");
27 shouldBe("keyRange.lower", "" + value);
28 if (open === undefined)
30 shouldBe("keyRange.lowerOpen", "" + open);
31 shouldBeNull("keyRange.upper");
32 shouldBeFalse("keyRange.upperOpen");
35 function checkUpperBoundKeyRange(value, open)
37 keyRange = evalAndLog("webkitIDBKeyRange.upperBound(" + value + "," + open + ")");
38 shouldBe("keyRange.upper", "" + value);
39 if (open === undefined)
41 shouldBe("keyRange.upperOpen", "" + open);
42 shouldBeNull("keyRange.lower");
43 shouldBeFalse("keyRange.lowerOpen");
46 function checkBoundKeyRange(lower, upper, lowerOpen, upperOpen)
48 keyRange = evalAndLog("webkitIDBKeyRange.bound(" + lower + "," + upper + ", " + lowerOpen + ", " + upperOpen + ")");
49 shouldBe("keyRange.lower", "" + lower);
50 shouldBe("keyRange.upper", "" + upper);
51 if (lowerOpen === undefined)
53 if (upperOpen === undefined)
55 shouldBe("keyRange.lowerOpen", "" + lowerOpen);
56 shouldBe("keyRange.upperOpen", "" + upperOpen);
61 shouldBeFalse("'lower' in webkitIDBKeyRange");
62 shouldBeFalse("'upper' in webkitIDBKeyRange");
63 shouldBeFalse("'lowerOpen' in webkitIDBKeyRange");
64 shouldBeFalse("'upperOpen' in webkitIDBKeyRange");
65 shouldBeTrue("'only' in webkitIDBKeyRange");
66 shouldBeTrue("'lowerBound' in webkitIDBKeyRange");
67 shouldBeTrue("'upperBound' in webkitIDBKeyRange");
68 shouldBeTrue("'bound' in webkitIDBKeyRange");
72 var instance = evalAndLog("instance = webkitIDBKeyRange.only(1)");
73 shouldBeTrue("'lower' in instance");
74 shouldBeTrue("'upper' in instance");
75 shouldBeTrue("'lowerOpen' in instance");
76 shouldBeTrue("'upperOpen' in instance");
77 shouldBeFalse("'only' in instance");
78 shouldBeFalse("'lowerBound' in instance");
79 shouldBeFalse("'upperBound' in instance");
80 shouldBeFalse("'bound' in instance");
84 checkSingleKeyRange(1);
85 checkSingleKeyRange(3.14);
86 checkSingleKeyRange("'a'");
88 checkLowerBoundKeyRange(10, true);
89 checkLowerBoundKeyRange(11, false);
90 checkLowerBoundKeyRange(12);
91 checkLowerBoundKeyRange(10.1, true);
92 checkLowerBoundKeyRange(11.2, false);
93 checkLowerBoundKeyRange(12.3);
94 checkLowerBoundKeyRange("'aa'", true);
95 checkLowerBoundKeyRange("'ab'", false);
96 checkLowerBoundKeyRange("'ac'");
98 checkUpperBoundKeyRange(20, true);
99 checkUpperBoundKeyRange(21, false);
100 checkUpperBoundKeyRange(22);
101 checkUpperBoundKeyRange(20.2, true);
102 checkUpperBoundKeyRange(21.3, false);
103 checkUpperBoundKeyRange(22.4);
104 checkUpperBoundKeyRange("'ba'", true);
105 checkUpperBoundKeyRange("'bb'", false);
106 checkUpperBoundKeyRange("'bc'");
108 checkBoundKeyRange(30, 40);
109 checkBoundKeyRange(31, 41, false, false);
110 checkBoundKeyRange(32, 42, false, true);
111 checkBoundKeyRange(33, 43, true, false);
112 checkBoundKeyRange(34, 44, true, true);
114 checkBoundKeyRange(30.1, 40.2);
115 checkBoundKeyRange(31.3, 41.4, false, false);
116 checkBoundKeyRange(32.5, 42.6, false, true);
117 checkBoundKeyRange(33.7, 43.8, true, false);
118 checkBoundKeyRange(34.9, 44.0, true, true);
120 checkBoundKeyRange("'aaa'", "'aba'", false, false);
121 checkBoundKeyRange("'aab'", "'abb'");
122 checkBoundKeyRange("'aac'", "'abc'", false, false);
123 checkBoundKeyRange("'aad'", "'abd'", false, true);
124 checkBoundKeyRange("'aae'", "'abe'", true, false);
125 checkBoundKeyRange("'aaf'", "'abf'", true, true);
128 debug("Passing an invalid key into only({})");
129 webkitIDBKeyRange.only({});
130 testFailed("No exception thrown");
132 testPassed("Caught exception: " + e.toString());
136 debug("Passing an invalid key into upperBound({})");
137 webkitIDBKeyRange.upperBound({});
138 testFailed("No exception thrown");
140 testPassed("Caught exception: " + e.toString());
144 debug("Passing an invalid key into lowerBound({})");
145 webkitIDBKeyRange.lowerBound({});
146 testFailed("No exception thrown");
148 testPassed("Caught exception: " + e.toString());
152 debug("Passing an invalid key into bound(null, {})");
153 webkitIDBKeyRange.bound(null, {});
154 testFailed("No exception thrown");
156 testPassed("Caught exception: " + e.toString());
160 debug("Passing an invalid key into bound({},null)");
161 webkitIDBKeyRange.bound({}, null);
162 testFailed("No exception thrown");
164 testPassed("Caught exception: " + e.toString());
168 debug("Passing an invalid key into bound({}, {})");
169 webkitIDBKeyRange.bound({}, {});
170 testFailed("No exception thrown");
172 testPassed("Caught exception: " + e.toString());