1 if(!dojo._hasResource["tests.data.utils"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["tests.data.utils"] = true;
3 dojo.provide("tests.data.utils");
4 dojo.require("dojo.data.util.filter");
5 dojo.require("dojo.data.util.sorter");
7 tests.register("tests.data.utils",
9 function testWildcardFilter_1(t){
11 var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"];
13 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
14 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
15 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
16 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
17 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
19 function testWildcardFilter_2(t){
21 var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"];
23 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
24 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
25 t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
26 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
27 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
29 function testWildcardFilter_3(t){
31 var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"];
33 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
34 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
35 t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
36 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
37 t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
39 function testWildcardFilter_4(t){
40 //Try and match <anything>c<anything>a*b
41 var pattern = "*c*a\\*b*";
42 var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"];
44 t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
45 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
46 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
47 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
48 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
50 function testWildcardFilter_5(t){
51 var pattern = "*c*a\\\\*b";
52 var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"];
54 t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
55 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
56 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
57 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
58 t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
60 function testWildcardFilter_caseInsensitive(t){
62 var values = ["CA", "california", "Macca", "Macca*b", "Macca\\b"];
64 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null);
65 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null);
66 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null);
67 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null);
68 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null);
70 function testSingleChar_1(t){
71 var pattern = "bob?le";
72 var values = ["bobble", "boble", "foo", "bobBle", "bar"];
74 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
75 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
76 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
77 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
78 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
80 function testSingleChar_2(t){
81 var pattern = "?ob?le";
82 var values = ["bobble", "cob1le", "foo", "bobBle", "bar"];
84 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
85 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
86 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
87 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
88 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
90 function testBracketChar(t){
91 //Make sure we don't treat this as regexp
92 var pattern = "*[*]*";
93 var values = ["bo[b]ble", "cob1le", "foo", "[bobBle]", "b[]ar"];
95 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
96 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
97 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
98 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
99 t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
101 function testBraceChar(t){
102 //Make sure we don't treat this as regexp
103 var pattern = "*{*}*";
104 var values = ["bo{b}ble", "cob1le", "foo", "{bobBle}", "b{}ar"];
106 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
107 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
108 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
109 t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
110 t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
112 function testParenChar(t){
113 //Make sure we don't treat this as regexp
114 var pattern = "*(*)*";
115 var values = ["bo(b)ble", "cob1le", "foo", "{bobBle}", "b()ar"];
117 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
118 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
119 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
120 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
121 t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
123 function testPlusChar(t){
124 //Make sure we don't treat this as regexp, so match anything with a + in it.
126 var values = ["bo+ble", "cob1le", "foo", "{bobBle}", "b{}ar"];
128 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
129 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
130 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
131 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
132 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
134 function testPeriodChar(t){
135 //Make sure we don't treat this as regexp, so match anything with a period
137 var values = ["bo.ble", "cob1le", "foo", "{bobBle}", "b{}ar"];
139 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
140 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
141 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
142 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
143 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
145 function testBarChar(t){
146 //Make sure we don't treat this as regexp, so match anything with a pipe bar
148 var values = ["bo.ble", "cob|le", "foo", "{bobBle}", "b{}ar"];
150 t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
151 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
152 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
153 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
154 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
156 function testDollarSignChar(t){
157 //Make sure we don't treat this as regexp, so match anything with a $ in it
159 var values = ["bo$ble", "cob$le", "foo", "{bobBle}", "b{}ar"];
161 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
162 t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
163 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
164 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
165 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
167 function testCarrotChar(t){
168 //Make sure we don't treat this as regexp, so match anything with a ^ in it
170 var values = ["bo$ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"];
172 t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
173 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
174 t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
175 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
176 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
178 function testEscapeChar(t){
179 //Make sure we escape properly, so match this single word.
180 var pattern = "bob\*ble";
181 var values = ["bob*ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"];
183 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
184 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
185 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
186 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
187 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
189 function testAbsoluteMatch(t){
190 var pattern = "bobble";
191 var values = ["bobble", "cob$le", "f^oo", "{bobBle}", "b{}ar"];
193 t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
194 t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
195 t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
196 t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);
197 t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null);