/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2012, 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.process.vector; import static org.junit.Assert.*; import java.io.File; import java.io.IOException; import java.util.EnumSet; import java.util.List; import java.util.Set; import org.geotools.data.DataStore; import org.geotools.data.property.PropertyDataStore; import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureSource; import org.geotools.process.vector.TransformProcess; import org.geotools.process.vector.AggregateProcess.AggregationFunction; import org.geotools.process.vector.AggregateProcess.Results; import org.geotools.process.vector.TransformProcess.Definition; import org.geotools.test.TestData; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.feature.type.AttributeDescriptor; import org.opengis.filter.expression.PropertyName; /** * * * @source $URL$ */ public class TransformProcessTest { DataStore bugs; @Before public void setup() throws IOException { File file = TestData.file(this, null ); bugs = new PropertyDataStore( file ); } @After public void tearDown(){ bugs.dispose(); } @Test public void testDefinition() throws Exception { String definition = "the_geom=the_geom"; List<Definition> def = TransformProcess.toDefinition( definition ); assertEquals( 1, def.size() ); assertEquals( "the_geom", def.get(0).name ); assertTrue( def.get(0).expression instanceof PropertyName ); } @Test public void testDefinitionListLF() throws Exception { String definition = "the_geom=the_geom\ncat=cat+1"; List<Definition> def = TransformProcess.toDefinition( definition ); assertEquals( 2, def.size() ); assertEquals( "the_geom", def.get(0).name ); assertTrue( def.get(0).expression instanceof PropertyName ); assertEquals( "cat", def.get(1).name ); } @Test public void testDefinitionListDelimiter() throws Exception { String definition = "the_geom=the_geom; cat=cat+1"; List<Definition> def = TransformProcess.toDefinition( definition ); assertEquals( 2, def.size() ); assertEquals( "the_geom", def.get(0).name ); assertTrue( def.get(0).expression instanceof PropertyName ); assertEquals( "cat", def.get(1).name ); } @Test public void testDefinitionListDelimiterExtra() throws Exception { String definition = "the_geom=the_geom; cat=cat+1;"; List<Definition> def = TransformProcess.toDefinition( definition ); assertEquals( 2, def.size() ); assertEquals( "the_geom", def.get(0).name ); assertTrue( def.get(0).expression instanceof PropertyName ); assertEquals( "cat", def.get(1).name ); } @Test public void testDefinitionListDelimiterLF() throws Exception { String definition = "the_geom=the_geom;\n cat=cat+1;"; List<Definition> def = TransformProcess.toDefinition( definition ); assertEquals( 2, def.size() ); assertEquals( "the_geom", def.get(0).name ); assertTrue( def.get(0).expression instanceof PropertyName ); assertEquals( "cat", def.get(1).name ); } @Test public void testSum() throws Exception { SimpleFeatureSource source = bugs.getFeatureSource("bugsites"); TransformProcess process = new TransformProcess(); String definition = "the_geom=the_geom\nnumber=cat"; SimpleFeatureCollection origional = source.getFeatures(); SimpleFeatureCollection result = process.execute( origional, definition ); assertEquals( origional.size(), result.size() ); SimpleFeatureType schema = result.getSchema(); AttributeDescriptor number = schema.getDescriptor("number"); assertTrue( Long.class.isAssignableFrom( number.getType().getBinding() ) ); } }