package org.vfny.geoserver.wms.responses.featureinfo; import java.util.Iterator; import junit.framework.Test; import org.geoserver.data.test.MockData; import org.geoserver.wms.WMSTestSupport; import org.geotools.data.FeatureSource; import org.geotools.feature.FeatureCollection; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.vfny.geoserver.wms.responses.featureInfo.FeatureTemplate; import org.vfny.geoserver.wms.responses.featureinfo.dummy.Dummy; public class FeatureTemplateTest extends WMSTestSupport { /** * This is a READ ONLY TEST so we can use one time setup */ public static Test suite() { return new OneTimeTestSetup(new FeatureTemplateTest()); } public void testWithDateAndBoolean() throws Exception { FeatureSource<SimpleFeatureType, SimpleFeature> source = getFeatureSource( MockData.PRIMITIVEGEOFEATURE ); FeatureCollection<SimpleFeatureType, SimpleFeature> fc = source.getFeatures(); Iterator i = fc.iterator(); try { SimpleFeature f = (SimpleFeature) i.next(); FeatureTemplate template = new FeatureTemplate(); try { template.description( f ); } catch ( Exception e ) { e.printStackTrace(); fail("template threw exception on null value"); } } finally { fc.close( i ); } } public void testRawValue() throws Exception { FeatureSource<SimpleFeatureType, SimpleFeature> source = getFeatureSource(MockData.PRIMITIVEGEOFEATURE); FeatureCollection<SimpleFeatureType, SimpleFeature> fc = source.getFeatures(); Iterator i = fc.iterator(); try { SimpleFeature f = (SimpleFeature) i.next(); FeatureTemplate template = new FeatureTemplate(); try { template.template(f, "rawValues.ftl", FeatureTemplateTest.class); } catch (Exception e) { e.printStackTrace(); throw(e); } } finally { fc.close(i); } } public void testWithNull() throws Exception { FeatureSource<SimpleFeatureType, SimpleFeature> source = getFeatureSource( MockData.BASIC_POLYGONS ); FeatureCollection<SimpleFeatureType, SimpleFeature> fc = source.getFeatures(); Iterator i = fc.iterator(); try { SimpleFeature f = (SimpleFeature) i.next(); FeatureTemplate template = new FeatureTemplate(); template.description( f ); //set a value to null f.setAttribute(1,null); try { template.description( f ); } catch ( Exception e ) { e.printStackTrace(); fail("template threw exception on null value"); } } finally { fc.close( i ); } } public void testAlternateLookup() throws Exception { FeatureSource<SimpleFeatureType, SimpleFeature> source = getFeatureSource( MockData.PRIMITIVEGEOFEATURE ); FeatureCollection<SimpleFeatureType, SimpleFeature> fc = source.getFeatures(); SimpleFeature f = fc.features().next(); FeatureTemplate template = new FeatureTemplate(); String result = template.template(f, "dummy.ftl", Dummy.class ); assertEquals( "dummy", result ); } }