add355a87ed99dc71d2c9786e8cf0860d25de361
[framework/web/webkit-efl.git] / LayoutTests / storage / indexeddb / keyrange.html
1 <html>
2 <head>
3 <script src="../../fast/js/resources/js-test-pre.js"></script>
4 <script src="resources/shared.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9 <script>
10
11 description("Test IndexedDB's KeyRange.");
12 if (window.layoutTestController)
13     layoutTestController.waitUntilDone();
14
15 function checkSingleKeyRange(value)
16 {
17     keyRange = evalAndLog("webkitIDBKeyRange.only(" + value + ")");
18     shouldBe("keyRange.lower", "" + value);
19     shouldBe("keyRange.upper", "" + value);
20     shouldBeFalse("keyRange.lowerOpen");
21     shouldBeFalse("keyRange.upperOpen");
22 }
23
24 function checkLowerBoundKeyRange(value, open)
25 {
26     keyRange = evalAndLog("webkitIDBKeyRange.lowerBound(" + value + "," + open + ")");
27     shouldBe("keyRange.lower", "" + value);
28     if (open === undefined)
29         open = false;
30     shouldBe("keyRange.lowerOpen", "" + open);
31     shouldBeNull("keyRange.upper");
32     shouldBeFalse("keyRange.upperOpen");
33 }
34
35 function checkUpperBoundKeyRange(value, open)
36 {
37     keyRange = evalAndLog("webkitIDBKeyRange.upperBound(" + value + "," + open + ")");
38     shouldBe("keyRange.upper", "" + value);
39     if (open === undefined)
40         open = false;
41     shouldBe("keyRange.upperOpen", "" + open);
42     shouldBeNull("keyRange.lower");
43     shouldBeFalse("keyRange.lowerOpen");
44 }
45
46 function checkBoundKeyRange(lower, upper, lowerOpen, upperOpen)
47 {
48     keyRange = evalAndLog("webkitIDBKeyRange.bound(" + lower + "," + upper + ", " + lowerOpen + ", " + upperOpen + ")");
49     shouldBe("keyRange.lower", "" + lower);
50     shouldBe("keyRange.upper", "" + upper);
51     if (lowerOpen === undefined)
52         lowerOpen = false;
53     if (upperOpen === undefined)
54         upperOpen = false;
55     shouldBe("keyRange.lowerOpen", "" + lowerOpen);
56     shouldBe("keyRange.upperOpen", "" + upperOpen);
57 }
58
59 function test()
60 {
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");
69
70     debug("");
71
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");
81
82     debug("");
83
84     checkSingleKeyRange(1);
85     checkSingleKeyRange(3.14);
86     checkSingleKeyRange("'a'");
87
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'");
97
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'");
107
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);
113
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);
119
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);
126
127     try {
128         debug("Passing an invalid key into only({})");
129         webkitIDBKeyRange.only({});
130         testFailed("No exception thrown");
131     } catch (e) {
132         testPassed("Caught exception: " + e.toString());
133     }
134
135     try {
136         debug("Passing an invalid key into upperBound({})");
137         webkitIDBKeyRange.upperBound({});
138         testFailed("No exception thrown");
139     } catch (e) {
140         testPassed("Caught exception: " + e.toString());
141     }
142  
143     try {
144         debug("Passing an invalid key into lowerBound({})");
145         webkitIDBKeyRange.lowerBound({});
146         testFailed("No exception thrown");
147     } catch (e) {
148         testPassed("Caught exception: " + e.toString());
149     }
150
151     try {
152         debug("Passing an invalid key into bound(null, {})");
153         webkitIDBKeyRange.bound(null, {});
154         testFailed("No exception thrown");
155     } catch (e) {
156         testPassed("Caught exception: " + e.toString());
157     }
158
159     try {
160         debug("Passing an invalid key into bound({},null)");
161         webkitIDBKeyRange.bound({}, null);
162         testFailed("No exception thrown");
163     } catch (e) {
164         testPassed("Caught exception: " + e.toString());
165     }
166
167     try {
168         debug("Passing an invalid key into bound({}, {})");
169         webkitIDBKeyRange.bound({}, {});
170         testFailed("No exception thrown");
171     } catch (e) {
172         testPassed("Caught exception: " + e.toString());
173     }
174 }
175
176 test();
177
178 done();
179
180 </script>
181 </body>
182 </html>