Package org.geotools.styling.builder

Source Code of org.geotools.styling.builder.CookbookPolygonTest

package org.geotools.styling.builder;

import static org.junit.Assert.*;

import java.awt.Color;

import javax.measure.unit.SI;

import org.geotools.styling.ExternalGraphic;
import org.geotools.styling.Font;
import org.geotools.styling.Mark;
import org.geotools.styling.PointPlacement;
import org.geotools.styling.PolygonSymbolizer;
import org.geotools.styling.Style;
import org.geotools.styling.TextSymbolizer2;
import org.junit.Test;

/**
*
*
* @source $URL$
*/
public class CookbookPolygonTest extends AbstractStyleTest {

    @Test
    public void testSimple() {
        Style style = new FillBuilder().color(Color.BLUE).buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertSimpleStyle(collector);

        // check the symbolizer
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertEquals(Color.BLUE, ps.getFill().getColor().evaluate(null, Color.class));
        assertNull(ps.getStroke());
    }

    @Test
    public void testSimpleWithStroke() {
        PolygonSymbolizerBuilder psb = new PolygonSymbolizerBuilder();
        psb.fill().color(Color.BLUE);
        Style style = psb.stroke().color(Color.WHITE).width(2).buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertSimpleStyle(collector);

        // check the symbolizer
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertEquals(Color.BLUE, ps.getFill().getColor().evaluate(null, Color.class));
        assertEquals(Color.WHITE, ps.getStroke().getColor().evaluate(null, Color.class));
        assertEquals(2, (int) ps.getStroke().getWidth().evaluate(null, Integer.class));
    }

    @Test
    public void testTransparent() {
        PolygonSymbolizerBuilder psb = new PolygonSymbolizerBuilder();
        psb.fill().color(Color.BLUE).opacity(0.5);
        psb.stroke().color(Color.WHITE).width(2);
        Style style = psb.buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertSimpleStyle(collector);

        // check the symbolizer
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertEquals(Color.BLUE, ps.getFill().getColor().evaluate(null, Color.class));
        assertEquals(0.5, ps.getFill().getOpacity().evaluate(null, Double.class), 0.0);
        assertEquals(Color.WHITE, ps.getStroke().getColor().evaluate(null, Color.class));
        assertEquals(2, (int) ps.getStroke().getWidth().evaluate(null, Integer.class));
    }

    @Test
    public void testGraphicFill() {
        Style style = new FillBuilder().graphicFill().size(93)
                .externalGraphic("colorblocks.png", "image/png").buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertSimpleStyle(collector);

        // check the symbolizer
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertNull(ps.getStroke());
        ExternalGraphic eg = (ExternalGraphic) ps.getFill().getGraphicFill().graphicalSymbols()
                .get(0);
        assertEquals("colorblocks.png", eg.getOnlineResource().getLinkage().toString());
        assertEquals("image/png", eg.getFormat());
    }

    @Test
    public void testHatch() {
        Style style = new FillBuilder().graphicFill().size(93).mark().name("shape://times")
                .stroke().colorHex("#990099").width(1).buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertSimpleStyle(collector);

        // check the symbolizer
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertNull(ps.getStroke());
        Mark mark = (Mark) ps.getFill().getGraphicFill().graphicalSymbols().get(0);
        assertEquals("shape://times", mark.getWellKnownName().evaluate(null, String.class));
        assertEquals("#990099", mark.getStroke().getColor().evaluate(null, String.class));
        assertNull(mark.getFill());
    }

    @Test
    public void testStyledLabel() {
        // with an extra halo so that we can do all in one round
        RuleBuilder rb = new RuleBuilder();
        PolygonSymbolizerBuilder pb = rb.polygon();
        pb.fill().colorHex("#40FF40");
        pb.stroke().colorHex("#FFFFFF").width(2);
        TextSymbolizerBuilder tb = rb.text().label("name");
        tb.pointPlacement().anchor().x(0.5).y(0.5);
        tb.newFont().familyName("Arial").size(11).styleName("normal").weightName("bold");
        tb.fill().color(Color.BLACK);
        tb.halo().radius(3).fill().color(Color.WHITE);
        tb.option("autoWrap", 60).option("maxDisplacement", 150);
        Style style = rb.buildStyle();
        // print(style);

        // round up the basic elements and check its simple
        StyleCollector collector = new StyleCollector();
        style.accept(collector);

        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertEquals("#40FF40", ps.getFill().getColor().evaluate(null, String.class));
        assertEquals(Color.WHITE, ps.getStroke().getColor().evaluate(null, Color.class));
        assertEquals(2, (int) ps.getStroke().getWidth().evaluate(null, Integer.class));

        TextSymbolizer2 ts = (TextSymbolizer2) collector.symbolizers.get(1);
        assertEquals(ff.property("name"), ts.getLabel());
        assertEquals(Color.BLACK, ts.getFill().getColor().evaluate(null, Color.class));

        // font
        Font font = ts.getFont();
        assertEquals("Arial", font.getFamily().get(0).evaluate(null, String.class));
        assertEquals(11, (int) font.getSize().evaluate(null, Integer.class));
        assertEquals(Font.Style.NORMAL, font.getStyle().evaluate(null, String.class));
        assertEquals(Font.Weight.BOLD, font.getWeight().evaluate(null, String.class));

        // placement
        PointPlacement pp = (PointPlacement) ts.getLabelPlacement();
        assertEquals(0.5, pp.getAnchorPoint().getAnchorPointX().evaluate(null, Double.class), 0);
        assertEquals(0.5, pp.getAnchorPoint().getAnchorPointY().evaluate(null, Double.class), 0);

        // halo
        assertEquals(3, (int) ts.getHalo().getRadius().evaluate(null, Integer.class));
        assertEquals(Color.WHITE, ts.getHalo().getFill().getColor().evaluate(null, Color.class));

        // vendor options
        assertEquals(2, ts.getOptions().size());
        assertEquals("60", ts.getOptions().get("autoWrap"));
        assertEquals("150", ts.getOptions().get("maxDisplacement"));
    }

    @Test
    public void testAttributeBased() {
        FeatureTypeStyleBuilder fts = new FeatureTypeStyleBuilder();
        fts.rule().name("SmallPop").title("Less Than 200,000").filter("pop < 200000").polygon()
                .fill().colorHex("#66FF66");
        fts.rule().name("MediumPop").title("200,000 to 500,000")
                .filter("pop between 200000 and 500000").polygon().fill().colorHex("#33CC33");
        fts.rule().name("LargePop").title("More than 500,000").filter("pop > 500000").polygon()
                .fill().colorHex("#009900");
        Style style = fts.buildStyle();
        // print(style);

        // round up the elements and check the basics
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertEquals(1, collector.featureTypeStyles.size());
        assertEquals(3, collector.rules.size());
        assertEquals(3, collector.symbolizers.size());

        // check rules
        assertEquals(ff.less(ff.property("pop"), ff.literal("200000")), collector.rules.get(0)
                .getFilter());
        assertEquals(ff.between(ff.property("pop"), ff.literal("200000"), ff.literal("500000")),
                collector.rules.get(1).getFilter());
        assertEquals(ff.greater(ff.property("pop"), ff.literal("500000")), collector.rules.get(2)
                .getFilter());

        // check symbolizers
        PolygonSymbolizer ps = (PolygonSymbolizer) collector.symbolizers.get(0);
        assertEquals("#66FF66", ps.getFill().getColor().evaluate(null, String.class));
        ps = (PolygonSymbolizer) collector.symbolizers.get(1);
        assertEquals("#33CC33", ps.getFill().getColor().evaluate(null, String.class));
        ps = (PolygonSymbolizer) collector.symbolizers.get(2);
        assertEquals("#009900", ps.getFill().getColor().evaluate(null, String.class));
    }
   
    @Test
    public void testZoomBased() {
        FeatureTypeStyleBuilder fts = new FeatureTypeStyleBuilder();

        RuleBuilder rb = fts.rule().name("Large").max(100000000);
        PolygonSymbolizerBuilder pb = rb.polygon();
        pb.fill().colorHex("#0000CC");
        pb.stroke().color(Color.BLACK).width(7);
        TextSymbolizerBuilder tb = rb.text().label("name");
        tb.newFont().familyName("Arial").size(14).styleName("normal").weightName("bold");
        tb.pointPlacement().anchor().x(0.5).y(0.5);
        tb.fill().color(Color.WHITE);
       
        pb = fts.rule().name("Medium").min(100000000).max(200000000).polygon();
        pb.stroke().color(Color.BLACK).width(4);
        pb.fill().colorHex("#0000CC");
       
        pb = fts.rule().name("Small").min(200000000).polygon();
        pb.stroke().color(Color.BLACK).width(1);
        pb.fill().colorHex("#0000CC");
       
        Style style = fts.buildStyle();
        // print(style);
       
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertEquals(1, collector.featureTypeStyles.size());
        assertEquals(3, collector.rules.size());
        assertEquals(4, collector.symbolizers.size());
       
        // happy that it built, does not really add anything that we don't have already tested
    }
   
    @Test
    public void testUomBased() {
        FeatureTypeStyleBuilder fts = new FeatureTypeStyleBuilder();
        PolygonSymbolizerBuilder pb = fts.rule().polygon();
        pb.uom(SI.METER);
        pb.fill().colorHex("#0000CC");
        pb.stroke().color(Color.BLACK).width(7);
        RuleBuilder rb = fts.rule().name("TextLarge").max(100000000);
        TextSymbolizerBuilder tb = rb.text().label("name").uom(SI.METER);
        tb.newFont().familyName("Arial").size(14).styleName("normal").weightName("bold");
        tb.pointPlacement().anchor().x(0.5).y(0.5);
        tb.fill().color(Color.WHITE);
        Style style = fts.buildStyle();
        // print(style);
       
        StyleCollector collector = new StyleCollector();
        style.accept(collector);
        assertEquals(1, collector.featureTypeStyles.size());
        assertEquals(2, collector.rules.size());
        assertEquals(2, collector.symbolizers.size());
       
        assertEquals(SI.METER, collector.symbolizers.get(0).getUnitOfMeasure());
        // happy that it built, does not really add anything that we don't have already tested
    }

}
TOP

Related Classes of org.geotools.styling.builder.CookbookPolygonTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.