package org.geoserver.filter.function; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.geoserver.test.GeoServerTestSupport; import org.geotools.factory.CommonFactoryFinder; import org.opengis.filter.FilterFactory2; import org.opengis.filter.expression.Function; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryCollection; import com.vividsolutions.jts.io.WKTReader; public class GeometryCollectorFunctionTest extends GeoServerTestSupport { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null); public void testCollectNull() { Function function = ff.function("collectGeometries", ff.literal(null)); GeometryCollection result = (GeometryCollection) function.evaluate(null); assertNotNull(result); assertEquals(0, result.getNumGeometries()); } public void testCollectNone() { Function function = ff.function("collectGeometries", ff.literal(Collections.emptyList())); GeometryCollection result = (GeometryCollection) function.evaluate(null); assertNotNull(result); assertEquals(0, result.getNumGeometries()); } public void testTwo() throws Exception { WKTReader reader = new WKTReader(); List<Geometry> geometries = new ArrayList<Geometry>(); final Geometry p0 = reader.read("POINT(0 0)"); geometries.add(p0); final Geometry p1 = reader.read("POINT(1 1)"); geometries.add(p1); Function function = ff.function("collectGeometries", ff.literal(geometries)); GeometryCollection result = (GeometryCollection) function.evaluate(null); assertEquals(2, result.getNumGeometries()); assertSame(p0, result.getGeometryN(0)); assertSame(p1, result.getGeometryN(1)); } }