/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* Copyright (C) 2007-2008-2009 GeoSolutions S.A.S.
* http://www.geo-solutions.it
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.sldservice.utils.classifier;
import java.awt.Color;
import java.util.List;
import org.geoserver.sldservice.utils.classifier.impl.BlueColorRamp;
import org.geotools.styling.LineSymbolizer;
import org.geotools.styling.PolygonSymbolizer;
import org.geotools.styling.Rule;
import org.junit.Test;
public class RulesBuilderTest extends ClassifierTestSupport {
private RulesBuilder builder;
@Override
public void setUp() throws Exception {
super.setUp();
builder = new RulesBuilder();
}
@Test
public void testQuantileClassification() throws Exception {
List <Rule> rules = builder.quantileClassification(pointCollection, "foo", Integer.class, 4, false, false);
assertEquals(4, rules.size());
}
@Test
public void testEqualIntervalClassification() throws Exception {
List <Rule> rules = builder.equalIntervalClassification(pointCollection, "foo", Integer.class, 4, false, false);
assertEquals(4, rules.size());
}
@Test
public void testUniqueIntervalClassification() throws Exception {
List <Rule> rules = builder.uniqueIntervalClassification(pointCollection, "group", Integer.class, -1, false);
assertEquals(4, rules.size());
rules = builder.uniqueIntervalClassification(pointCollection, "id", Integer.class, -1, false);
assertEquals(8, rules.size());
}
@Test
public void testJenksClassification() throws Exception {
List <Rule> rules = builder.jenksClassification(lineCollection, "jenks71", Integer.class, 10, false, false);
assertEquals(10, rules.size());
}
@Test
public void testPolygonStyle() throws Exception {
int numClasses = 10;
List <Rule> rules = builder.equalIntervalClassification(pointCollection, "foo", Integer.class, numClasses, false, false);
builder.polygonStyle(rules, new BlueColorRamp(), false);
Rule ruleOne = rules.get(0);
assertTrue(ruleOne.getSymbolizers()[0] instanceof PolygonSymbolizer);
PolygonSymbolizer symbolizer = (PolygonSymbolizer)ruleOne.getSymbolizers()[0];
assertEquals(new Color(0, 0, 49), symbolizer.getFill().getColor().evaluate(null, Color.class));
assertNotNull(ruleOne.getFilter());
assertEquals(numClasses, rules.size());
}
@Test
public void testPolygonStyleReverse() throws Exception {
int numClasses = 10;
List <Rule> rules = builder.equalIntervalClassification(pointCollection, "foo", Integer.class, numClasses, false, false);
builder.polygonStyle(rules, new BlueColorRamp(), true);
PolygonSymbolizer symbolizer = (PolygonSymbolizer)rules.get(0).getSymbolizers()[0];
assertEquals(new Color(0, 0, 224), symbolizer.getFill().getColor().evaluate(null, Color.class));
assertEquals(numClasses, rules.size());
}
@Test
public void testLineStyle() throws Exception {
int numClasses = 10;
List <Rule> rules = builder.jenksClassification(lineCollection, "jenks71", Integer.class, numClasses, false, false);
builder.lineStyle(rules, new BlueColorRamp(), false);
Rule ruleOne = rules.get(0);
assertTrue(ruleOne.getSymbolizers()[0] instanceof LineSymbolizer);
LineSymbolizer symbolizer = (LineSymbolizer)ruleOne.getSymbolizers()[0];
assertEquals(new Color(0, 0, 49), symbolizer.getStroke().getColor().evaluate(null, Color.class));
assertNotNull(ruleOne.getFilter());
assertEquals(10, rules.size());
}
@Test
public void testLineStyleReverse() throws Exception {
int numClasses = 10;
List <Rule> rules = builder.jenksClassification(lineCollection, "jenks71", Integer.class, numClasses, false, false);
builder.lineStyle(rules, new BlueColorRamp(), true);
LineSymbolizer symbolizer = (LineSymbolizer)rules.get(0).getSymbolizers()[0];
assertEquals(new Color(0, 0, 224), symbolizer.getStroke().getColor().evaluate(null, Color.class));
}
}