]> dev.renevier.net Git - syp.git/blob - openlayers/tests/Filter/Comparison.html
initial commit
[syp.git] / openlayers / tests / Filter / Comparison.html
1 <html> 
2 <head> 
3     <script src="../../lib/OpenLayers.js"></script> 
4     <script type="text/javascript">
5
6     function test_initialize(t) { 
7         t.plan(3); 
8          
9         var options = {'foo': 'bar'}; 
10         var filter = new OpenLayers.Filter.Comparison(options); 
11         t.ok(filter instanceof OpenLayers.Filter.Comparison, 
12              "new OpenLayers.Filter.Comparison returns object" ); 
13         t.eq(filter.foo, "bar", "constructor sets options correctly"); 
14         t.eq(typeof filter.evaluate, "function", "filter has an evaluate function"); 
15     }
16
17     function test_destroy(t) {
18         t.plan(1);
19         
20         var filter = new OpenLayers.Filter.Comparison();
21         filter.destroy();
22         t.eq(filter.symbolizer, null, "symbolizer hash nulled properly");
23     }
24     
25     function test_value2regex(t) {
26         t.plan(4);
27         
28         var filter = new OpenLayers.Filter.Comparison({
29                 property: "foo",
30                 value: "*b?r\\*\\?*",
31                 type: OpenLayers.Filter.Comparison.LIKE});
32         filter.value2regex("*", "?", "\\");
33         t.eq(filter.value, ".*b.r\\*\\?.*", "Regular expression generated correctly.");
34         
35         filter.value = "%b.r!%!.%";
36         filter.value2regex("%", ".", "!");
37         t.eq(filter.value, ".*b.r\\%\\..*", "Regular expression with different wildcard and escape chars generated correctly.");
38     
39         filter.value = "!!";
40         filter.value2regex();
41         t.eq(filter.value, "\\!", "!! successfully unescaped to \\!");
42         
43         // Big one.
44         filter.value = "!!c!!!d!e";
45         filter.value2regex();
46         t.eq(filter.value, "\\!c\\!\\d\\e", "!!c!!!d!e successfully unescaped to \\!c\\!\\d\\e");
47     }
48     
49     function test_regex2value(t) {
50         t.plan(8);
51         
52         function r2v(regex) {
53             return OpenLayers.Filter.Comparison.prototype.regex2value.call(
54                 {value: regex}
55             );
56         }
57         
58         t.eq(r2v("foo"), "foo", "doesn't change string without special chars");
59         t.eq(r2v("foo.*foo"), "foo*foo", "wildCard replaced");
60         t.eq(r2v("foo.foo"), "foo.foo", "singleChar replaced");
61         t.eq(r2v("foo\\\\foo"), "foo\\foo", "escape removed");
62         t.eq(r2v("foo!foo"), "foo!!foo", "escapes !");
63         t.eq(r2v("foo\\*foo"), "foo!*foo", "replaces escape on *");
64         t.eq(r2v("foo\\.foo"), "foo!.foo", "replaces escape on .");
65         t.eq(r2v("foo\\\\.foo"), "foo\\.foo", "unescapes only \\ before .");
66         
67     }
68     
69     function test_evaluate(t) {
70         
71         var cases = [{
72             filter: new OpenLayers.Filter.Comparison({
73                 type: OpenLayers.Filter.Comparison.BETWEEN,
74                 property: "area",
75                 lowerBoundary: 1000,
76                 upperBoundary: 4999
77             }),
78             context: {area: 999},
79             expect: false
80         }, {
81             filter: new OpenLayers.Filter.Comparison({
82                 type: OpenLayers.Filter.Comparison.BETWEEN,
83                 property: "area",
84                 lowerBoundary: 1000,
85                 upperBoundary: 4999
86             }),
87             context: {area: 1000},
88             expect: true
89         }, {
90             filter: new OpenLayers.Filter.Comparison({
91                 type: OpenLayers.Filter.Comparison.BETWEEN,
92                 property: "area",
93                 lowerBoundary: 1000,
94                 upperBoundary: 4999
95             }),
96             context: {area: 4999},
97             expect: true
98         }, {
99             filter: new OpenLayers.Filter.Comparison({
100                 type: OpenLayers.Filter.Comparison.BETWEEN,
101                 property: "area",
102                 lowerBoundary: 1000,
103                 upperBoundary: 4999
104             }),
105             context: {area: 5000},
106             expect: false
107         }, {
108             filter: new OpenLayers.Filter.Comparison({
109                 type: OpenLayers.Filter.Comparison.BETWEEN,
110                 property: "area",
111                 lowerBoundary: 1000,
112                 upperBoundary: 4999
113             }),
114             context: {area: 999},
115             expect: false
116         }, {
117             filter: new OpenLayers.Filter.Comparison({
118                 type: OpenLayers.Filter.Comparison.EQUAL_TO,
119                 property: "prop",
120                 value: "Foo"
121             }),
122             context: {prop: "Foo"},
123             expect: true
124         }, {
125             filter: new OpenLayers.Filter.Comparison({
126                 type: OpenLayers.Filter.Comparison.EQUAL_TO,
127                 property: "prop",
128                 value: "Foo"
129             }),
130             context: {prop: "foo"},
131             expect: false
132         }, {
133             filter: new OpenLayers.Filter.Comparison({
134                 type: OpenLayers.Filter.Comparison.EQUAL_TO,
135                 matchCase: true,
136                 property: "prop",
137                 value: "Foo"
138             }),
139             context: {prop: "foo"},
140             expect: false
141         }, {
142             filter: new OpenLayers.Filter.Comparison({
143                 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
144                 property: "prop",
145                 value: "foo"
146             }),
147             context: {prop: "FOO"},
148             expect: true
149         }, {
150             filter: new OpenLayers.Filter.Comparison({
151                 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
152                 matchCase: true,
153                 property: "prop",
154                 value: "foo"
155             }),
156             context: {prop: "FOO"},
157             expect: true
158         }, {
159             filter: new OpenLayers.Filter.Comparison({
160                 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
161                 matchCase: false,
162                 property: "prop",
163                 value: "foo"
164             }),
165             context: {prop: "FOO"},
166             expect: false
167         }];
168         
169         t.plan(cases.length);
170         
171         var c;
172         for(var i=0; i<cases.length; ++i) {
173             c = cases[i];
174             t.eq(c.filter.evaluate(c.context), c.expect, "case " + i + ": " + c.filter.type);
175         }
176         
177     }
178     
179     function test_clone(t) {
180         
181         t.plan(3);
182         
183         var filter = new OpenLayers.Filter.Comparison({
184             type: OpenLayers.Filter.Comparison.EQUAL_TO,
185             property: "prop",
186             value: "val"
187         });
188         
189         var clone = filter.clone();
190         
191         // modify the original
192         filter.type = OpenLayers.Filter.Comparison.NOT_EQUAL_TO;
193         
194         t.eq(clone.type, OpenLayers.Filter.Comparison.EQUAL_TO, "clone has proper type");
195         t.eq(clone.property, "prop", "clone has proper property");
196         t.eq(clone.value, "val", "clone has proper value");
197         
198         filter.destroy();
199
200     }
201
202
203     </script> 
204 </head> 
205 <body> 
206 </body> 
207 </html>