3 <script src="../../../lib/OpenLayers.js"></script>
4 <script type="text/javascript">
7 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
9 '<ogc:PropertyIsBetween>' +
10 '<ogc:PropertyName>number</ogc:PropertyName>' +
11 '<ogc:LowerBoundary>' +
12 '<ogc:Literal>1064866676</ogc:Literal>' +
13 '</ogc:LowerBoundary>' +
14 '<ogc:UpperBoundary>' +
15 '<ogc:Literal>1065512599</ogc:Literal>' +
16 '</ogc:UpperBoundary>' +
17 '</ogc:PropertyIsBetween>' +
18 '<ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">' +
19 '<ogc:PropertyName>cat</ogc:PropertyName>' +
20 '<ogc:Literal>*dog.food!*good</ogc:Literal>' +
21 '</ogc:PropertyIsLike>' +
23 '<ogc:PropertyIsLessThanOrEqualTo>' +
24 '<ogc:PropertyName>FOO</ogc:PropertyName>' +
25 '<ogc:Literal>5000</ogc:Literal>' +
26 '</ogc:PropertyIsLessThanOrEqualTo>' +
28 '<ogc:PropertyIsEqualTo matchCase="true">' +
29 '<ogc:PropertyName>cat</ogc:PropertyName>' +
30 '<ogc:Literal>dog</ogc:Literal>' +
31 '</ogc:PropertyIsEqualTo>' +
32 '<ogc:PropertyIsEqualTo matchCase="false">' +
33 '<ogc:PropertyName>cat</ogc:PropertyName>' +
34 '<ogc:Literal>dog</ogc:Literal>' +
35 '</ogc:PropertyIsEqualTo>' +
39 function test_read(t) {
42 var parser = new OpenLayers.Format.Filter.v1_1_0();
43 var xml = new OpenLayers.Format.XML();
44 var filter = parser.read(xml.read(test_xml).documentElement);
46 t.ok(filter instanceof OpenLayers.Filter.Logical, "instance of correct class");
47 t.eq(filter.type, OpenLayers.Filter.Logical.OR, "correct type");
48 t.eq(filter.filters.length, 5, "correct number of child filters");
51 function test_write(t) {
54 // read first - testing that write produces the ogc:Filter element above
55 var parser = new OpenLayers.Format.Filter.v1_1_0();
56 var xml = new OpenLayers.Format.XML();
57 var filter = parser.read(xml.read(test_xml).documentElement);
59 var node = parser.write(filter);
60 t.xml_eq(node, test_xml, "filter correctly written");
64 function test_matchCase(t) {
65 var parser = new OpenLayers.Format.Filter.v1_1_0();
66 var xml = new OpenLayers.Format.XML();
70 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
71 '<ogc:PropertyIsEqualTo>' +
72 '<ogc:PropertyName>cat</ogc:PropertyName>' +
73 '<ogc:Literal>dog</ogc:Literal>' +
74 '</ogc:PropertyIsEqualTo>' +
79 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
80 '<ogc:PropertyIsEqualTo matchCase="1">' +
81 '<ogc:PropertyName>cat</ogc:PropertyName>' +
82 '<ogc:Literal>dog</ogc:Literal>' +
83 '</ogc:PropertyIsEqualTo>' +
88 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
89 '<ogc:PropertyIsEqualTo matchCase="true">' +
90 '<ogc:PropertyName>cat</ogc:PropertyName>' +
91 '<ogc:Literal>dog</ogc:Literal>' +
92 '</ogc:PropertyIsEqualTo>' +
97 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
98 '<ogc:PropertyIsEqualTo matchCase="0">' +
99 '<ogc:PropertyName>cat</ogc:PropertyName>' +
100 '<ogc:Literal>dog</ogc:Literal>' +
101 '</ogc:PropertyIsEqualTo>' +
106 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
107 '<ogc:PropertyIsEqualTo matchCase="0">' +
108 '<ogc:PropertyName>cat</ogc:PropertyName>' +
109 '<ogc:Literal>dog</ogc:Literal>' +
110 '</ogc:PropertyIsEqualTo>' +
115 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
116 '<ogc:PropertyIsNotEqualTo matchCase="true">' +
117 '<ogc:PropertyName>cat</ogc:PropertyName>' +
118 '<ogc:Literal>dog</ogc:Literal>' +
119 '</ogc:PropertyIsNotEqualTo>' +
124 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
125 '<ogc:PropertyIsNotEqualTo matchCase="false">' +
126 '<ogc:PropertyName>cat</ogc:PropertyName>' +
127 '<ogc:Literal>dog</ogc:Literal>' +
128 '</ogc:PropertyIsNotEqualTo>' +
133 t.plan(cases.length);
136 for(var i=0; i<cases.length; ++i) {
138 filter = parser.read(xml.read(c.str).documentElement);
139 t.eq(filter.matchCase, c.exp, "case " + i);
144 function test_BBOX(t) {
146 var filter = new OpenLayers.Filter.Spatial({
147 type: OpenLayers.Filter.Spatial.BBOX,
148 property: "the_geom",
149 value: new OpenLayers.Bounds(-180, -90, 180, 90),
150 projection: "EPSG:4326"
154 '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
156 '<ogc:PropertyName>the_geom</ogc:PropertyName>' +
157 '<gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326">' +
158 '<gml:lowerCorner>-180 -90</gml:lowerCorner>' +
159 '<gml:upperCorner>180 90</gml:upperCorner>' +
164 var parser = new OpenLayers.Format.Filter.v1_1_0();
165 var node = parser.write(filter);
167 t.xml_eq(node, out, "bbox correctly written");
170 function test_Intersects(t) {
175 '<Filter xmlns="http://www.opengis.net/ogc">' +
177 '<PropertyName>Geometry</PropertyName>' +
178 '<gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326">' +
179 '<gml:lowerCorner>-180 -90</gml:lowerCorner>' +
180 '<gml:upperCorner>180 90</gml:upperCorner>' +
185 var format = new OpenLayers.Format.Filter.v1_1_0();
186 var filter = new OpenLayers.Filter.Spatial({
187 type: OpenLayers.Filter.Spatial.INTERSECTS,
188 property: "Geometry",
189 value: new OpenLayers.Bounds(-180, -90, 180, 90),
190 projection: "EPSG:4326"
194 var node = format.write(filter);
195 t.xml_eq(node, str, "filter correctly written");
198 var doc = (new OpenLayers.Format.XML).read(str);
199 var got = format.read(doc.firstChild);
200 t.eq(got.type, filter.type, "read correct type");
201 t.eq(got.property, filter.property, "read correct property");
202 t.eq(got.value.toArray(), filter.value.toArray(), "read correct value");