/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.filter.v1_0; import junit.framework.TestCase; import java.io.ByteArrayInputStream; import org.opengis.filter.Filter; import org.opengis.filter.PropertyIsEqualTo; import org.opengis.filter.expression.Literal; import org.opengis.filter.expression.PropertyName; import org.opengis.filter.spatial.DWithin; import org.geotools.xml.Configuration; import org.geotools.xml.Parser; import org.geotools.xml.Parser.Properties; public class OGCFilterTest extends TestCase { Parser parser; protected void setUp() throws Exception { super.setUp(); Configuration configuration = new OGCConfiguration(); parser = new Parser(configuration); } public void testRun() throws Exception { Object thing = parser.parse(getClass().getResourceAsStream("test1.xml")); assertNotNull(thing); assertTrue(thing instanceof PropertyIsEqualTo); PropertyIsEqualTo equal = (PropertyIsEqualTo) thing; assertTrue(equal.getExpression1() instanceof PropertyName); assertTrue(equal.getExpression2() instanceof Literal); PropertyName name = (PropertyName) equal.getExpression1(); assertEquals("testString", name.getPropertyName()); Literal literal = (Literal) equal.getExpression2(); assertEquals("2", literal.toString()); } public void testLax() throws Exception { String xml = "<Filter>" + " <PropertyIsEqualTo>" + " <PropertyName>foo</PropertyName>" + " <Literal>bar</Literal>" + " </PropertyIsEqualTo>" + "</Filter>"; OGCConfiguration configuration = new OGCConfiguration(); configuration.getProperties().add(Properties.IGNORE_SCHEMA_LOCATION); Parser parser = new Parser(configuration); Filter filter = (Filter) parser.parse(new ByteArrayInputStream(xml.getBytes())); assertNotNull(filter); } public void testDWithinParse() throws Exception { String xml = "<Filter>" + "<DWithin>" + "<PropertyName>the_geom</PropertyName>" + "<Point>" + "<coordinates>-74.817265,40.5296504</coordinates>" + "</Point>" + "<Distance units=\"km\">200</Distance>" + "</DWithin>" + "</Filter>"; OGCConfiguration configuration = new OGCConfiguration(); configuration.getProperties().add(Properties.IGNORE_SCHEMA_LOCATION); Parser parser = new Parser(configuration); DWithin filter = (DWithin) parser.parse(new ByteArrayInputStream(xml.getBytes())); assertNotNull(filter); //Asserting the Property Name assertNotNull(filter.getExpression1()); PropertyName propName = (PropertyName) filter.getExpression1(); String name = propName.getPropertyName(); assertEquals("the_geom", name); //Asserting the Geometry assertNotNull(filter.getExpression2()); Literal geom = (Literal) filter.getExpression2(); assertEquals("POINT (-74.817265 40.5296504)", geom.toString()); //Asserting the Distance assertTrue(filter.getDistance() > 0 ); Double dist = filter.getDistance(); assertEquals(200.0, dist); //Asserting the Distance Units assertNotNull(filter.getDistanceUnits()); String unit = filter.getDistanceUnits(); assertEquals("km", unit); } }