/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2007 - 2011, Johann Sorel * * 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.geotoolkit.gui.swing.style; import org.geotoolkit.style.DefaultStyleFactory; import org.geotoolkit.style.MutableFeatureTypeStyle; import org.geotoolkit.style.MutableRule; import org.geotoolkit.style.MutableStyle; import org.geotoolkit.style.MutableStyleFactory; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.opengis.style.SemanticType; import org.opengis.style.Symbolizer; import static org.junit.Assert.*; /** * * @author Johann Sorel * @module */ public class StyleModelTest extends org.geotoolkit.test.TestBase { private static final MutableStyleFactory SF = new DefaultStyleFactory(); private static final double DELTA = 0d; public StyleModelTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { } @After public void tearDown() { } @Test public void ruleTest(){ final MutableRule rule = SF.rule(); final StyleTreeModel model = new StyleTreeModel(rule); final Object root = model.getRoot(); assertEquals(rule, root); assertEquals(0, model.getChildCount(root)); final Symbolizer symbol1 = SF.lineSymbolizer(); final Symbolizer symbol2 = SF.polygonSymbolizer(); rule.symbolizers().add(symbol1); assertEquals(1, model.getChildCount(root)); assertEquals(symbol1, model.getChild(root, 0)); rule.symbolizers().add(symbol2); assertEquals(2, model.getChildCount(root)); assertEquals(symbol1, model.getChild(root, 0)); assertEquals(symbol2, model.getChild(root, 1)); rule.symbolizers().remove(symbol1); assertEquals(1, model.getChildCount(root)); assertEquals(symbol2, model.getChild(root, 0)); rule.symbolizers().remove(symbol2); assertEquals(0, model.getChildCount(root)); //try modifying the properties ----------------------------------------- rule.symbolizers().add(symbol1); rule.symbolizers().add(symbol2); assertEquals(2, model.getChildCount(root)); assertEquals(symbol1, model.getChild(root, 0)); assertEquals(symbol2, model.getChild(root, 1)); rule.setElseFilter(true); assertEquals(2, model.getChildCount(root)); assertEquals(symbol1, model.getChild(root, 0)); assertEquals(symbol2, model.getChild(root, 1)); rule.setName("hello"); assertEquals(2, model.getChildCount(root)); assertEquals(symbol1, model.getChild(root, 0)); assertEquals(symbol2, model.getChild(root, 1)); } @Test public void ftsTest(){ final MutableFeatureTypeStyle fts = SF.featureTypeStyle(); final StyleTreeModel model = new StyleTreeModel(fts); final Object root = model.getRoot(); assertEquals(fts, root); assertEquals(0, model.getChildCount(root)); final MutableRule rule1 = SF.rule(); final MutableRule rule2 = SF.rule(); fts.rules().add(rule1); assertEquals(1, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); fts.rules().add(rule2); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); fts.rules().remove(rule1); assertEquals(1, model.getChildCount(root)); assertEquals(rule2, model.getChild(root, 0)); fts.rules().remove(rule2); assertEquals(0, model.getChildCount(root)); //try modifying the properties ----------------------------------------- fts.rules().add(rule1); fts.rules().add(rule2); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); fts.setOnlineResource(null); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); fts.setName("hello"); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); fts.semanticTypeIdentifiers().clear(); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); fts.semanticTypeIdentifiers().add(SemanticType.LINE); assertEquals(2, model.getChildCount(root)); assertEquals(rule1, model.getChild(root, 0)); assertEquals(rule2, model.getChild(root, 1)); } @Test public void styleTest(){ final MutableStyle style = SF.style(); final StyleTreeModel model = new StyleTreeModel(style); final Object root = model.getRoot(); assertEquals(style, root); assertEquals(0, model.getChildCount(root)); final MutableFeatureTypeStyle fts1 = SF.featureTypeStyle(); final MutableFeatureTypeStyle fts2 = SF.featureTypeStyle(); style.featureTypeStyles().add(fts1); assertEquals(1, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); style.featureTypeStyles().add(fts2); assertEquals(2, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); style.featureTypeStyles().remove(fts1); assertEquals(1, model.getChildCount(root)); assertEquals(fts2, model.getChild(root, 0)); style.featureTypeStyles().remove(fts2); assertEquals(0, model.getChildCount(root)); //try modifying the properties ----------------------------------------- style.featureTypeStyles().add(fts1); style.featureTypeStyles().add(fts2); assertEquals(2, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); style.setDefault(true); assertEquals(2, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); style.setName("hello"); assertEquals(2, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); } @Test public void deepTest(){ final MutableStyle style = SF.style(); final StyleTreeModel model = new StyleTreeModel(style); final Object root = model.getRoot(); assertEquals(style, root); assertEquals(0, model.getChildCount(root)); final MutableFeatureTypeStyle fts1 = SF.featureTypeStyle(); final MutableFeatureTypeStyle fts2 = SF.featureTypeStyle(); final MutableFeatureTypeStyle fts3 = SF.featureTypeStyle(); final MutableRule rule1 = SF.rule(); final Symbolizer symbol1 = SF.lineSymbolizer(); style.featureTypeStyles().add(fts1); assertEquals(1, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); style.featureTypeStyles().add(fts2); assertEquals(2, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); style.featureTypeStyles().add(fts3); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); fts1.rules().add(rule1); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); rule1.symbolizers().add(symbol1); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); assertEquals(1, model.getChildCount(model.getChild(model.getChild(root, 0),0)) ); assertEquals(symbol1, model.getChild(model.getChild(model.getChild(root, 0),0),0)); fts2.semanticTypeIdentifiers().clear(); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); assertEquals(1, model.getChildCount(model.getChild(model.getChild(root, 0),0)) ); assertEquals(symbol1, model.getChild(model.getChild(model.getChild(root, 0),0),0)); fts2.semanticTypeIdentifiers().add(SemanticType.ANY); fts2.semanticTypeIdentifiers().add(SemanticType.POINT); fts2.semanticTypeIdentifiers().add(SemanticType.LINE); fts2.semanticTypeIdentifiers().add(SemanticType.POLYGON); fts2.semanticTypeIdentifiers().add(SemanticType.TEXT); fts2.semanticTypeIdentifiers().add(SemanticType.RASTER); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); assertEquals(1, model.getChildCount(model.getChild(model.getChild(root, 0),0)) ); assertEquals(symbol1, model.getChild(model.getChild(model.getChild(root, 0),0),0)); fts2.setDescription(SF.description("tadam", "plopplop")); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); assertEquals(1, model.getChildCount(model.getChild(model.getChild(root, 0),0)) ); assertEquals(symbol1, model.getChild(model.getChild(model.getChild(root, 0),0),0)); fts2.setName("the name"); assertEquals(3, model.getChildCount(root)); assertEquals(fts1, model.getChild(root, 0)); assertEquals(fts2, model.getChild(root, 1)); assertEquals(fts3, model.getChild(root, 2)); assertEquals(1, model.getChildCount(model.getChild(root, 0)) ); assertEquals(rule1, model.getChild(model.getChild(root, 0),0)); assertEquals(1, model.getChildCount(model.getChild(model.getChild(root, 0),0)) ); assertEquals(symbol1, model.getChild(model.getChild(model.getChild(root, 0),0),0)); } }