01: package org.geoserver.wfs.kvp;
02:
03: import java.net.URLDecoder;
04: import java.util.List;
05:
06: import junit.framework.TestCase;
07:
08: import org.opengis.filter.Filter;
09: import org.opengis.filter.Id;
10: import org.opengis.filter.PropertyIsEqualTo;
11:
12: public class FilterKvpParserTest extends TestCase {
13:
14: public void test() throws Exception {
15: String filter = "%3Cogc%3AFilter+xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net"
16: + "%2Fogc%22+xmlns%3Acdf%3D%22http%3A%2F%2Fwww.opengis.net%2Fcite%2Fdata%22"
17: + "%3E%3Cogc%3APropertyIsEqualTo%3E%3Cogc%3APropertyName%3Ecdf%3Aintegers%3C"
18: + "%2Fogc%3APropertyName%3E%3Cogc%3AAdd%3E%3Cogc%3ALiteral%3E4%3C%2Fogc%3A"
19: + "Literal%3E%3Cogc%3ALiteral%3E3%3C%2Fogc%3ALiteral%3E%3C%2Fogc%3AAdd%3E%3C"
20: + "%2Fogc%3APropertyIsEqualTo%3E%3C%2Fogc%3AFilter%3E";
21: filter = URLDecoder.decode(filter, "UTF-8");
22:
23: List filters = (List) new FilterKvpParser().parse(filter);
24: assertNotNull(filters);
25: assertEquals(1, filters.size());
26:
27: Filter f = (Filter) filters.get(0);
28: assertTrue(f instanceof PropertyIsEqualTo);
29: }
30:
31: public void testMultiFilter() throws Exception {
32: String filter = "(%3CFilter%20xmlns=%22http://www.opengis.net/ogc%22%3E"
33: + "%3CFeatureId%20fid=%22states.3%22/%3E%3C/Filter%3E)"
34: + "(%3CFilter%20xmlns=%22http://www.opengis.net/ogc%22%3E%3CFeatureId"
35: + "%20fid=%22tiger_roads.3%22/%3E%3C/Filter%3E)";
36: filter = URLDecoder.decode(filter, "UTF-8");
37:
38: List filters = (List) new FilterKvpParser().parse(filter);
39: assertNotNull(filters);
40: assertEquals(2, filters.size());
41:
42: Filter f1 = (Filter) filters.get(0);
43: assertTrue(f1 instanceof Id);
44: String fid = (String) ((Id) f1).getIDs().iterator().next();
45: assertEquals("states.3", fid);
46:
47: Filter f2 = (Filter) filters.get(1);
48: assertTrue(f2 instanceof Id);
49: fid = (String) ((Id) f2).getIDs().iterator().next();
50: assertEquals("tiger_roads.3", fid);
51: }
52:
53: public void testEmptyAndNonEmptyFilter() throws Exception {
54: String param = "()(%3CFilter%20xmlns=%22http://www.opengis.net/ogc"
55: + "%22%3E%3CFeatureId%20fid=%22roads.3%22/%3E%3C/Filter%3E)";
56: param = URLDecoder.decode(param, "UTF-8");
57:
58: List filters = (List) new FilterKvpParser().parse(param);
59: assertNotNull(filters);
60: assertEquals(2, filters.size());
61:
62: Filter empty = (Filter) filters.get(0);
63: Filter fid = (Filter) filters.get(1);
64:
65: assertNotNull(empty);
66: assertEquals(Filter.INCLUDE, empty);
67:
68: assertNotNull(fid);
69: assertTrue(fid instanceof Id);
70: }
71: }
|