package org.geotools.process.vector;
import static junit.framework.Assert.*;
import org.geotools.data.collection.ListFeatureCollection;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.process.vector.CentroidProcess;
import org.junit.Before;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.io.WKTReader;
public class CentroidProcessTest {
WKTReader reader = new WKTReader();
private ListFeatureCollection fc;
@Before
public void setup() throws Exception {
SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
tb.add("geom", Polygon.class, "EPSG:4326");
tb.add("name", String.class);
tb.setName("circles");
SimpleFeatureType ft = tb.buildFeatureType();
fc = new ListFeatureCollection(ft);
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(ft);
fb.add(reader.read("POINT(0 0)").buffer(10));
fb.add("one");
fc.add(fb.buildFeature(null));
fb.add(reader.read("POINT(10 0)").buffer(10));
fb.add("two");
fc.add(fb.buildFeature(null));
}
@Test
public void testSchema() {
CentroidProcess cp = new CentroidProcess();
SimpleFeatureCollection result = cp.execute(fc);
SimpleFeatureType ft = result.getSchema();
assertEquals(2, ft.getAttributeCount());
assertEquals(Point.class, ft.getGeometryDescriptor().getType().getBinding());
assertEquals(String.class, ft.getDescriptor("name").getType().getBinding());
}
@Test
public void testResults() throws Exception {
CentroidProcess cp = new CentroidProcess();
SimpleFeatureCollection result = cp.execute(fc);
SimpleFeatureIterator it = result.features();
assertTrue(it.hasNext());
SimpleFeature f = it.next();
assertEquals(0, ((Point) f.getDefaultGeometry()).getX(), 1e-6);
assertEquals(0, ((Point) f.getDefaultGeometry()).getY(), 1e-6);
assertEquals("one", f.getAttribute("name"));
f = it.next();
assertEquals(10, ((Point) f.getDefaultGeometry()).getX(), 1e-6);
assertEquals(0, ((Point) f.getDefaultGeometry()).getY(), 1e-6);
assertEquals("two", f.getAttribute("name"));
}
}