package org.geotools.styling;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.geotools.factory.CommonFactoryFinder;
import org.junit.Test;
import org.opengis.filter.FilterFactory2;
import org.opengis.filter.expression.Expression;
import org.opengis.style.AnchorPoint;
import org.opengis.style.Displacement;
import org.opengis.style.Graphic;
import org.opengis.style.GraphicalSymbol;
import org.opengis.style.StyleVisitor;
/**
* Test the various Impl classes; many of these provide public api that is used by StyleImplFactory.
* <p>
* In particular this class is focused on:
* <ul>
* <li>Testing any methods not hit by StyleFactoryImpl and SLDParsing
* <li>Going over the "cast" methods used to promote org.opengis.styling instances to a StyleImpl if
* required. These are used to ensure that any set methods can handle a org.opengis.styling
* instances.
* </ul>
*
* @source $URL$
*/
public class StyleTest {
static FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
static StyleFactoryImpl2 sf = new StyleFactoryImpl2(ff);
@Test
public void displacement() {
assertNull(DisplacementImpl.cast(null));
DisplacementImpl displacement = new DisplacementImpl();
displacement.setDisplacementX(1.0);
displacement.setDisplacementY(1.0);
assertSame(displacement, DisplacementImpl.cast(displacement));
assertEquals( displacement, sf.displacement( ff.literal(1.0), ff.literal(1.0)));
org.opengis.style.Displacement external = new Displacement() {
public Expression getDisplacementY() {
return ff.literal(1.0);
}
public Expression getDisplacementX() {
return ff.literal(1.0);
}
public Object accept(StyleVisitor visitor, Object data) {
return visitor.visit(this, data);
}
};
displacement = DisplacementImpl.cast( external );
assertEquals( ff.literal(1.0), displacement.getDisplacementX());
}
@SuppressWarnings("deprecation")
@Test
public void font() throws Exception {
List<Expression> family = new ArrayList<Expression>();
family.add( ff.literal("ariel"));
family.add( ff.literal("Helvetica"));
family.add( ff.literal("sanserif"));
Expression style=ff.literal("noraml");
Expression weight = ff.literal("normal");
Expression size = ff.literal(12);
Font font = sf.font(family, style, weight, size);
assertEquals( family, font.getFamily() );
assertEquals( style, font.getStyle()); // oblique or italic
assertEquals( weight, font.getWeight() ); // bold or normal
assertEquals( size, font.getSize() );
assertSame( font.getFontStyle(), font.getStyle() );
assertSame( font.getFontFamily(), family.get(0));
assertSame( font.getFontWeight(), font.getWeight() );
assertSame( font.getFontSize(), font.getSize());
FontImpl cast = FontImpl.cast( font );
assertSame( cast, font );
}
@Test
public void graphic() throws Exception {
List<GraphicalSymbol> symbols = new ArrayList<GraphicalSymbol>();
symbols.add(sf.mark(ff.literal("square"), null, null));
symbols.add(sf.mark(ff.literal("circle"), null, null));
Expression opacity = null;
Expression size = null;
Expression rotation = null;
AnchorPoint anchor = null;
Displacement disp = null;
Graphic graphic = sf.graphic(symbols, opacity, size, rotation, anchor, disp);
assertNotNull( graphic );
}
}