3 <script src="../../lib/OpenLayers.js"></script>
4 <script type="text/javascript">
6 function test_initialize(t) {
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");
17 function test_destroy(t) {
20 var filter = new OpenLayers.Filter.Comparison();
22 t.eq(filter.symbolizer, null, "symbolizer hash nulled properly");
25 function test_value2regex(t) {
28 var filter = new OpenLayers.Filter.Comparison({
31 type: OpenLayers.Filter.Comparison.LIKE});
32 filter.value2regex("*", "?", "\\");
33 t.eq(filter.value, ".*b.r\\*\\?.*", "Regular expression generated correctly.");
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.");
41 t.eq(filter.value, "\\!", "!! successfully unescaped to \\!");
44 filter.value = "!!c!!!d!e";
46 t.eq(filter.value, "\\!c\\!\\d\\e", "!!c!!!d!e successfully unescaped to \\!c\\!\\d\\e");
49 function test_regex2value(t) {
53 return OpenLayers.Filter.Comparison.prototype.regex2value.call(
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 .");
69 function test_evaluate(t) {
72 filter: new OpenLayers.Filter.Comparison({
73 type: OpenLayers.Filter.Comparison.BETWEEN,
81 filter: new OpenLayers.Filter.Comparison({
82 type: OpenLayers.Filter.Comparison.BETWEEN,
87 context: {area: 1000},
90 filter: new OpenLayers.Filter.Comparison({
91 type: OpenLayers.Filter.Comparison.BETWEEN,
96 context: {area: 4999},
99 filter: new OpenLayers.Filter.Comparison({
100 type: OpenLayers.Filter.Comparison.BETWEEN,
105 context: {area: 5000},
108 filter: new OpenLayers.Filter.Comparison({
109 type: OpenLayers.Filter.Comparison.BETWEEN,
114 context: {area: 999},
117 filter: new OpenLayers.Filter.Comparison({
118 type: OpenLayers.Filter.Comparison.EQUAL_TO,
122 context: {prop: "Foo"},
125 filter: new OpenLayers.Filter.Comparison({
126 type: OpenLayers.Filter.Comparison.EQUAL_TO,
130 context: {prop: "foo"},
133 filter: new OpenLayers.Filter.Comparison({
134 type: OpenLayers.Filter.Comparison.EQUAL_TO,
139 context: {prop: "foo"},
142 filter: new OpenLayers.Filter.Comparison({
143 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
147 context: {prop: "FOO"},
150 filter: new OpenLayers.Filter.Comparison({
151 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
156 context: {prop: "FOO"},
159 filter: new OpenLayers.Filter.Comparison({
160 type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
165 context: {prop: "FOO"},
169 t.plan(cases.length);
172 for(var i=0; i<cases.length; ++i) {
174 t.eq(c.filter.evaluate(c.context), c.expect, "case " + i + ": " + c.filter.type);
179 function test_clone(t) {
183 var filter = new OpenLayers.Filter.Comparison({
184 type: OpenLayers.Filter.Comparison.EQUAL_TO,
189 var clone = filter.clone();
191 // modify the original
192 filter.type = OpenLayers.Filter.Comparison.NOT_EQUAL_TO;
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");