/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.filter.function;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.geoserver.test.GeoServerSystemTestSupport;
import org.geotools.factory.CommonFactoryFinder;
import org.junit.Test;
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 GeoServerSystemTestSupport {
static final FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
@Test
public void testCollectNull() {
Function function = ff.function("collectGeometries", ff.literal(null));
GeometryCollection result = (GeometryCollection) function.evaluate(null);
assertNotNull(result);
assertEquals(0, result.getNumGeometries());
}
@Test
public void testCollectNone() {
Function function = ff.function("collectGeometries", ff.literal(Collections.emptyList()));
GeometryCollection result = (GeometryCollection) function.evaluate(null);
assertNotNull(result);
assertEquals(0, result.getNumGeometries());
}
@Test
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));
}
}