/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2008 - 2009, Geomatys * * 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; either * version 2.1 of the License, or (at your option) any later version. * * 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.geotoolkit.style.se; import java.awt.Color; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.Iterator; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import junit.framework.TestCase; import org.apache.sis.measure.Units; import org.geotoolkit.factory.FactoryFinder; import org.geotoolkit.factory.Hints; import org.geotoolkit.se.xml.v110.CoverageStyleType; import org.geotoolkit.se.xml.v110.ObjectFactory; import org.geotoolkit.se.xml.v110.RuleType; import org.geotoolkit.sld.xml.v110.UserStyle; import org.geotoolkit.style.MutableFeatureTypeStyle; import org.geotoolkit.style.MutableRule; import org.geotoolkit.style.MutableStyle; import org.geotoolkit.style.MutableStyleFactory; import org.geotoolkit.sld.xml.GTtoSE110Transformer; import org.geotoolkit.sld.xml.JAXBSLDUtilities; import org.geotoolkit.sld.xml.SE110toGTTransformer; import org.apache.sis.xml.MarshallerPool; import org.apache.sis.util.ObjectConverters; import org.geotoolkit.ogc.xml.v110.PropertyNameType; import org.junit.Test; import org.opengis.filter.FilterFactory2; import org.opengis.util.FactoryException; import org.opengis.style.ContrastMethod; import org.opengis.style.LineSymbolizer; import org.opengis.style.Mark; import org.opengis.style.OverlapBehavior; import org.opengis.style.PointSymbolizer; import org.opengis.style.PolygonSymbolizer; import org.opengis.style.RasterSymbolizer; import org.opengis.style.SemanticType; import org.opengis.style.TextSymbolizer; /** * Test class for style jaxb marshelling and unmarshelling. * * @author Johann Sorel (Geomatys) * @module */ public class SEforSLD110Test extends TestCase{ private static final FilterFactory2 FILTER_FACTORY; private static final MutableStyleFactory STYLE_FACTORY; static{ final Hints hints = new Hints(); hints.put(Hints.STYLE_FACTORY, MutableStyleFactory.class); hints.put(Hints.FILTER_FACTORY, FilterFactory2.class); STYLE_FACTORY = (MutableStyleFactory)FactoryFinder.getStyleFactory(hints); FILTER_FACTORY = (FilterFactory2) FactoryFinder.getFilterFactory(hints); } private static MarshallerPool POOL; private static final SE110toGTTransformer TRANSFORMER_GT; private static final GTtoSE110Transformer TRANSFORMER_OGC; private static final String valueName = "name"; private static final String valueTitle = "title"; private static final String valueAbstract = "abstract"; private static final String valueFTN = "A feature type name"; private static final String valueGeom = null; //FILES ------------------------------------- private static File FILE_SE_SYMBOL_POINT; private static File FILE_SE_SYMBOL_LINE; private static File FILE_SE_SYMBOL_POLYGON; private static File FILE_SE_SYMBOL_TEXT; private static File FILE_SE_SYMBOL_RASTER; private static File FILE_SE_STYLE; private static File FILE_SE_FTS; private static File FILE_SE_RULE; private static File TEST_FILE_SE_SYMBOL_POINT; private static File TEST_FILE_SE_SYMBOL_LINE; private static File TEST_FILE_SE_SYMBOL_POLYGON; private static File TEST_FILE_SE_SYMBOL_TEXT; private static File TEST_FILE_SE_SYMBOL_RASTER; private static File TEST_FILE_SE_STYLE; private static File TEST_FILE_SE_FTS; private static File TEST_FILE_SE_RULE; static{ POOL = JAXBSLDUtilities.getMarshallerPoolSLD110(); TRANSFORMER_GT = new SE110toGTTransformer(FILTER_FACTORY, STYLE_FACTORY); assertNotNull(TRANSFORMER_GT); TRANSFORMER_OGC = new GTtoSE110Transformer(); assertNotNull(TRANSFORMER_OGC); try { FILE_SE_SYMBOL_POINT = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_symbol_point_v110.xml").toURI() ); FILE_SE_SYMBOL_LINE = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_symbol_line_v110.xml").toURI() ); FILE_SE_SYMBOL_POLYGON = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_symbol_polygon_v110.xml").toURI() ); FILE_SE_SYMBOL_TEXT = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_symbol_text_v110.xml").toURI() ); FILE_SE_SYMBOL_RASTER = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_symbol_raster_v110.xml").toURI() ); FILE_SE_STYLE = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SLD_userstyle_v110.xml").toURI() ); FILE_SE_FTS = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_fts_v110.xml").toURI() ); FILE_SE_RULE = new File( SEforSLD110Test.class.getResource("/org/geotoolkit/sample/SE_rule_v110.xml").toURI() ); } catch (URISyntaxException ex) { ex.printStackTrace(); } assertNotNull(FILE_SE_SYMBOL_POINT); assertNotNull(FILE_SE_SYMBOL_LINE); assertNotNull(FILE_SE_SYMBOL_POLYGON); assertNotNull(FILE_SE_SYMBOL_TEXT); assertNotNull(FILE_SE_SYMBOL_RASTER); assertNotNull(FILE_SE_STYLE); assertNotNull(FILE_SE_FTS); assertNotNull(FILE_SE_RULE); try{ TEST_FILE_SE_SYMBOL_POINT = File.createTempFile("test_se_symbol_point_v110", ".xml"); TEST_FILE_SE_SYMBOL_LINE = File.createTempFile("test_se_symbol_line_v110", ".xml"); TEST_FILE_SE_SYMBOL_POLYGON = File.createTempFile("test_se_symbol_polygon_v110", ".xml"); TEST_FILE_SE_SYMBOL_TEXT = File.createTempFile("test_se_symbol_text_v110", ".xml"); TEST_FILE_SE_SYMBOL_RASTER = File.createTempFile("test_se_symbol_raster_v110", ".xml"); TEST_FILE_SE_STYLE = File.createTempFile("test_se_style_v110", ".xml"); TEST_FILE_SE_FTS = File.createTempFile("test_se_fts_v110", ".xml"); TEST_FILE_SE_RULE = File.createTempFile("test_se_rule_v110", ".xml"); }catch(IOException ex){ ex.printStackTrace(); } //switch to false to avoid temp files to be deleted if(true){ TEST_FILE_SE_SYMBOL_POINT.deleteOnExit(); TEST_FILE_SE_SYMBOL_LINE.deleteOnExit(); TEST_FILE_SE_SYMBOL_POLYGON.deleteOnExit(); TEST_FILE_SE_SYMBOL_TEXT.deleteOnExit(); TEST_FILE_SE_SYMBOL_RASTER.deleteOnExit(); TEST_FILE_SE_STYLE.deleteOnExit(); TEST_FILE_SE_FTS.deleteOnExit(); TEST_FILE_SE_RULE.deleteOnExit(); } } //////////////////////////////////////////////////////////////////////////// // JAXB TEST MARSHELLING AND UNMARSHELLING FOR STYLE ORDERING ////////////// //////////////////////////////////////////////////////////////////////////// @Test public void testStyle() throws JAXBException, FactoryException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_STYLE); assertNotNull(obj); UserStyle jax = (UserStyle) obj; MutableStyle style = TRANSFORMER_GT.visitUserStyle(jax); assertNotNull(style); assertEquals(style.getName(), valueName); assertEquals(style.getDescription().getTitle().toString(), valueTitle); assertEquals(style.getDescription().getAbstract().toString(), valueAbstract); assertEquals(style.isDefault(), true); assertEquals(style.featureTypeStyles().size(), 3); //Write test UserStyle pvt = TRANSFORMER_OGC.visit(style, null); assertNotNull(pvt); assertEquals(pvt.getName(), valueName); assertEquals(String.valueOf(pvt.getDescription().getTitle()), valueTitle); assertEquals(String.valueOf(pvt.getDescription().getAbstract()), valueAbstract); assertEquals(pvt.isIsDefault(), Boolean.TRUE); assertEquals(pvt.getFeatureTypeStyleOrCoverageStyleOrOnlineResource().size(), 3); MARSHALLER.marshal(pvt, TEST_FILE_SE_STYLE); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testFTS() throws JAXBException, FactoryException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_FTS); assertNotNull(obj); JAXBElement<?> jax = (JAXBElement<?>) obj; MutableFeatureTypeStyle fts = TRANSFORMER_GT.visitFTS(jax.getValue()); assertNotNull(fts); assertEquals(fts.getName(), valueName); assertEquals(fts.getDescription().getTitle().toString(), valueTitle); assertEquals(fts.getDescription().getAbstract().toString(), valueAbstract); assertEquals(fts.featureTypeNames().iterator().next().tip().toString(), valueFTN); assertEquals(fts.rules().size(), 3); assertEquals(fts.semanticTypeIdentifiers().size(), 6); Iterator<SemanticType> ite = fts.semanticTypeIdentifiers().iterator(); assertEquals(ite.next(), SemanticType.ANY); assertEquals(ite.next(), SemanticType.POINT); assertEquals(ite.next(), SemanticType.LINE); assertEquals(ite.next(), SemanticType.POLYGON); assertEquals(ite.next(), SemanticType.TEXT); assertEquals(ite.next(), SemanticType.RASTER); //Write test CoverageStyleType pvt = (CoverageStyleType) TRANSFORMER_OGC.visit(fts, null); assertNotNull(pvt); assertEquals(pvt.getName(), valueName); assertEquals(String.valueOf(pvt.getDescription().getTitle()), valueTitle); assertEquals(String.valueOf(pvt.getDescription().getAbstract()), valueAbstract); assertTrue(pvt.getCoverageName().contains(valueFTN) ); assertEquals(pvt.getRuleOrOnlineResource().size(), 3); assertEquals(pvt.getSemanticTypeIdentifier().size(), 6); assertEquals(pvt.getSemanticTypeIdentifier().get(0), "generic:any"); assertEquals(pvt.getSemanticTypeIdentifier().get(1), "generic:point"); assertEquals(pvt.getSemanticTypeIdentifier().get(2), "generic:line"); assertEquals(pvt.getSemanticTypeIdentifier().get(3), "generic:polygon"); assertEquals(pvt.getSemanticTypeIdentifier().get(4), "generic:text"); assertEquals(pvt.getSemanticTypeIdentifier().get(5), "generic:raster"); MARSHALLER.marshal(new ObjectFactory().createCoverageStyle(pvt), TEST_FILE_SE_FTS); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testRule() throws JAXBException, FactoryException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_RULE); assertNotNull(obj); JAXBElement<?> jax = (JAXBElement<?>) obj; MutableRule rule = TRANSFORMER_GT.visitRule(jax.getValue()); assertNotNull(rule); assertEquals(rule.getName(), valueName); assertEquals(rule.getDescription().getTitle().toString(), valueTitle); assertEquals(rule.getDescription().getAbstract().toString(), valueAbstract); assertEquals(rule.getMinScaleDenominator(),500d); assertEquals(rule.getMaxScaleDenominator(),1000d); assertNull(rule.getLegend()); assertNotNull(rule.getFilter()); assertEquals(rule.symbolizers().size(), 4); //Write test RuleType pvt = (RuleType) TRANSFORMER_OGC.visit(rule, null); assertNotNull(pvt); assertEquals(pvt.getName(), valueName); assertEquals(String.valueOf(pvt.getDescription().getTitle()), valueTitle); assertEquals(String.valueOf(pvt.getDescription().getAbstract()), valueAbstract); assertEquals(pvt.getMinScaleDenominator(),500d); assertEquals(pvt.getMaxScaleDenominator(),1000d); assertNull(pvt.getLegendGraphic()); assertEquals(pvt.getSymbolizer().size(), 4); MARSHALLER.marshal(new ObjectFactory().createRule(pvt), TEST_FILE_SE_RULE); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } //////////////////////////////////////////////////////////////////////////// // JAXB TEST MARSHELLING AND UNMARSHELLING FOR SYMBOLIZERS ///////////////// //////////////////////////////////////////////////////////////////////////// @Test public void testPointSymbolizer() throws JAXBException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_POINT); assertNotNull(obj); JAXBElement<org.geotoolkit.se.xml.v110.PointSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.PointSymbolizerType>) obj; PointSymbolizer pointSymbol = TRANSFORMER_GT.visit(jax.getValue()); assertNotNull(pointSymbol); assertEquals(pointSymbol.getGeometryPropertyName(), valueGeom); assertEquals(Units.POINT, pointSymbol.getUnitOfMeasure()); assertNotNull(pointSymbol.getGraphic()); assertEquals(pointSymbol.getGraphic().getOpacity().evaluate(null, Float.class), 0.7f); assertEquals(pointSymbol.getGraphic().getRotation().evaluate(null, Float.class), 110f); assertEquals(pointSymbol.getGraphic().getSize().evaluate(null, Float.class), 32f); Mark mark = (Mark) pointSymbol.getGraphic().graphicalSymbols().get(0); assertEquals(mark.getWellKnownName().evaluate(null, String.class), "square"); assertEquals(mark.getStroke().getWidth().evaluate(null, Float.class), 13f); assertEquals(mark.getStroke().getOpacity().evaluate(null, Float.class), 0.4f); assertEquals(mark.getStroke().getLineJoin().evaluate(null, String.class), "bevel"); assertEquals(mark.getStroke().getLineCap().evaluate(null, String.class), "butt"); assertEquals(mark.getStroke().getDashOffset().evaluate(null, Float.class), 2.3f); assertEquals(mark.getStroke().getColor().evaluate(null, Color.class), ObjectConverters.convert("#404040",Color.class)); assertEquals(mark.getFill().getOpacity().evaluate(null, Float.class), 1.0f); assertEquals(mark.getFill().getColor().evaluate(null, Color.class), ObjectConverters.convert("#808080",Color.class)); //Write test JAXBElement<org.geotoolkit.se.xml.v110.PointSymbolizerType> pvt = TRANSFORMER_OGC.visit(pointSymbol,null); assertNotNull(pvt); assertEquals(pvt.getValue().getGeometry() , null); org.geotoolkit.se.xml.v110.GraphicType gra = pvt.getValue().getGraphic(); assertNotNull(gra.getOpacity()); assertNotNull(gra.getRotation()); assertNotNull(gra.getSize()); assertEquals(gra.getExternalGraphicOrMark().size() , 1); assertNotNull(pvt.getValue().getGraphic()); MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_POINT); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testLineSymbolizer() throws JAXBException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_LINE); assertNotNull(obj); JAXBElement<org.geotoolkit.se.xml.v110.LineSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.LineSymbolizerType>) obj; LineSymbolizer lineSymbol = TRANSFORMER_GT.visit(jax.getValue()); assertNotNull(lineSymbol); assertEquals("the_geom",lineSymbol.getGeometryPropertyName()); assertEquals(Units.METRE, lineSymbol.getUnitOfMeasure()); assertNotNull(lineSymbol.getStroke()); assertEquals(lineSymbol.getStroke().getWidth().evaluate(null, Float.class), 13f); assertEquals(lineSymbol.getStroke().getOpacity().evaluate(null, Float.class), 0.4f); assertEquals(lineSymbol.getStroke().getLineJoin().evaluate(null, String.class), "bevel"); assertEquals(lineSymbol.getStroke().getLineCap().evaluate(null, String.class), "butt"); assertEquals(lineSymbol.getStroke().getDashOffset().evaluate(null, Float.class), 2.3f); assertEquals(lineSymbol.getStroke().getColor().evaluate(null, Color.class), ObjectConverters.convert("#FF0000",Color.class)); //Write test JAXBElement<org.geotoolkit.se.xml.v110.LineSymbolizerType> pvt = TRANSFORMER_OGC.visit(lineSymbol,null); assertNotNull(pvt); assertEquals(new PropertyNameType("the_geom"), ((JAXBElement)pvt.getValue().getGeometry().getContent().get(0)).getValue()); assertNotNull(pvt.getValue().getStroke()); MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_LINE); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testPolygonSymbolizer() throws JAXBException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_POLYGON); assertNotNull(obj); JAXBElement<org.geotoolkit.se.xml.v110.PolygonSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.PolygonSymbolizerType>) obj; PolygonSymbolizer polySymbol = TRANSFORMER_GT.visit(jax.getValue()); assertNotNull(polySymbol); assertEquals(polySymbol.getGeometryPropertyName(), valueGeom); assertEquals(Units.FOOT, polySymbol.getUnitOfMeasure()); assertNotNull(polySymbol.getStroke()); assertEquals(polySymbol.getStroke().getWidth().evaluate(null, Float.class), 13f); assertEquals(polySymbol.getStroke().getOpacity().evaluate(null, Float.class), 0.4f); assertEquals(polySymbol.getStroke().getLineJoin().evaluate(null, String.class), "bevel"); assertEquals(polySymbol.getStroke().getLineCap().evaluate(null, String.class), "butt"); assertEquals(polySymbol.getStroke().getDashOffset().evaluate(null, Float.class), 2.3f); assertEquals(polySymbol.getStroke().getColor().evaluate(null, Color.class), ObjectConverters.convert("#FF0000",Color.class)); assertEquals(polySymbol.getFill().getOpacity().evaluate(null, Float.class), 1.0f); assertEquals(polySymbol.getFill().getColor().evaluate(null, Color.class), ObjectConverters.convert("#0000FF",Color.class)); //Write test JAXBElement<org.geotoolkit.se.xml.v110.PolygonSymbolizerType> pvt = TRANSFORMER_OGC.visit(polySymbol,null); assertNotNull(pvt); assertEquals(pvt.getValue().getGeometry() , null); assertNotNull(pvt.getValue().getStroke()); assertNotNull(pvt.getValue().getFill()); MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_POLYGON); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testTextSymbolizer() throws JAXBException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_TEXT); assertNotNull(obj); JAXBElement<org.geotoolkit.se.xml.v110.TextSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.TextSymbolizerType>) obj; TextSymbolizer textSymbol = TRANSFORMER_GT.visit(jax.getValue()); assertNotNull(textSymbol); assertEquals(textSymbol.getGeometryPropertyName(), valueGeom); assertEquals(Units.FOOT, textSymbol.getUnitOfMeasure()); assertNotNull(textSymbol.getFill()); assertEquals(textSymbol.getFill().getOpacity().evaluate(null, Float.class), 1.0f); assertEquals(textSymbol.getFill().getColor().evaluate(null, Color.class), ObjectConverters.convert("#FFC800",Color.class)); assertEquals(textSymbol.getHalo().getRadius().evaluate(null, Float.class), 5f); assertEquals(textSymbol.getHalo().getFill().getOpacity().evaluate(null, Float.class), 0.52f); assertEquals(textSymbol.getLabel().toString(), "aField"); assertEquals(textSymbol.getFont().getFamily().get(0).evaluate(null,String.class), "arial"); assertEquals(textSymbol.getFont().getFamily().get(1).evaluate(null,String.class), "serif"); assertEquals(textSymbol.getFont().getSize().evaluate(null,Float.class), 17f); assertEquals(textSymbol.getFont().getStyle().evaluate(null,String.class), "italic"); assertEquals(textSymbol.getFont().getWeight().evaluate(null,String.class), "bold"); //Write test JAXBElement<org.geotoolkit.se.xml.v110.TextSymbolizerType> pvt = TRANSFORMER_OGC.visit(textSymbol,null); assertNotNull(pvt); assertEquals(pvt.getValue().getGeometry() , null); assertNotNull(pvt.getValue().getFill()); MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_TEXT); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } @Test public void testRasterSymbolizer() throws JAXBException{ final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller(); final Marshaller MARSHALLER = POOL.acquireMarshaller(); //Read test Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_RASTER); assertNotNull(obj); JAXBElement<org.geotoolkit.se.xml.v110.RasterSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.RasterSymbolizerType>) obj; RasterSymbolizer rasterSymbol = TRANSFORMER_GT.visit(jax.getValue()); assertNotNull(rasterSymbol); assertEquals(rasterSymbol.getGeometryPropertyName(), valueGeom); assertEquals(Units.METRE, rasterSymbol.getUnitOfMeasure()); assertNotNull(rasterSymbol.getChannelSelection()); assertEquals(rasterSymbol.getChannelSelection().getRGBChannels()[0].getChannelName(), "band_1"); assertEquals(rasterSymbol.getChannelSelection().getRGBChannels()[1].getChannelName(), "band_2"); assertEquals(rasterSymbol.getChannelSelection().getRGBChannels()[2].getChannelName(), "band_3"); // assertNotNull(rasterSymbol.getColorMap()); // assertNotNull( rasterSymbol.getColorMap().getFunction() ); assertNotNull(rasterSymbol.getContrastEnhancement()); assertEquals(rasterSymbol.getContrastEnhancement().getMethod(), ContrastMethod.NORMALIZE); assertEquals(rasterSymbol.getContrastEnhancement().getGammaValue().evaluate(null,Float.class), 3f); assertNotNull(rasterSymbol.getImageOutline()); assertNotNull(rasterSymbol.getOpacity()); assertEquals(rasterSymbol.getOpacity().evaluate(null,Float.class), 0.32f); assertNotNull(rasterSymbol.getOverlapBehavior()); assertEquals(rasterSymbol.getOverlapBehavior(), OverlapBehavior.EARLIEST_ON_TOP); assertNotNull(rasterSymbol.getShadedRelief()); assertEquals(rasterSymbol.getShadedRelief().isBrightnessOnly(), true); assertEquals(rasterSymbol.getShadedRelief().getReliefFactor().evaluate(null, Float.class), 5f); //Write test JAXBElement<org.geotoolkit.se.xml.v110.RasterSymbolizerType> pvt = TRANSFORMER_OGC.visit(rasterSymbol,null); assertNotNull(pvt); org.geotoolkit.se.xml.v110.RasterSymbolizerType rs = pvt.getValue(); assertEquals(rs.getGeometry() , null); assertNotNull(rs.getChannelSelection()); assertEquals(rs.getChannelSelection().getRedChannel().getSourceChannelName(), "band_1"); assertEquals(rs.getChannelSelection().getGreenChannel().getSourceChannelName(), "band_2"); assertEquals(rs.getChannelSelection().getBlueChannel().getSourceChannelName(), "band_3"); // assertNotNull(rs.getColorMap()); //TODO test colormap content assertNotNull(rs.getContrastEnhancement()); assertNotNull(rs.getContrastEnhancement().getNormalize()); assertNull(rs.getContrastEnhancement().getHistogram()); assertEquals(rs.getContrastEnhancement().getGammaValue().doubleValue(), 3d); assertNotNull(rs.getImageOutline()); assertNotNull(rs.getOpacity()); assertEquals(rs.getContrastEnhancement().getGammaValue().doubleValue(), 3d); assertNotNull(rs.getOverlapBehavior()); // assertNotNull(rs.getOverlapBehavior().getEARLIESTONTOP()); // assertNull(rs.getOverlapBehavior().getAVERAGE()); // assertNull(rs.getOverlapBehavior().getLATESTONTOP()); // assertNull(rs.getOverlapBehavior().getRANDOM()); assertNotNull(rs.getShadedRelief()); assertEquals(rs.getShadedRelief().isBrightnessOnly().booleanValue(), true); assertEquals(rs.getShadedRelief().getReliefFactor().doubleValue(), 5d); MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_RASTER); POOL.recycle(MARSHALLER); POOL.recycle(UNMARSHALLER); } }