package com.baselet.element.facet.customdrawings; import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import com.baselet.control.enums.AlignHorizontal; import com.baselet.control.enums.LineType; import com.baselet.diagram.draw.helper.ColorOwn; import com.baselet.diagram.draw.helper.ColorOwn.Transparency; public class StyleOptionsTest { private DummyDrawHandler drawHandler; @Before public void before() { drawHandler = new DummyDrawHandler(); } @Test public void drawArcParameters() { new CustomDrawingParserImpl("drawArc(width / 2 , height * 0.5 , 3 + 2 , 4 *3 , 5 - 1 , 1 + 6 * 2 , false ) lt=- lw=25 bg=black fg=pink", 100, 200, drawHandler).parse(); assertEquals(DummyDrawHandler.drawArcToString(50, 100, 5, 12, 4, 13, false, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawCircleParameters() { new CustomDrawingParserImpl("drawCircle(width/2, height * 0.5, 10) lt=- lw=25 bg=black fg=pink", 100, 200, drawHandler).parse(); assertEquals(DummyDrawHandler.drawCircleToString(50, 100, 10, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawEllipseParametersLtOrder() { new CustomDrawingParserImpl("drawEllipse(1,2,3,4) lt=: bg=black lt=- lw=25 lt=. fg=pink lt=..", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawEllipseToString(1, 2, 3, 4, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.DOUBLE_DASHED, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawLineParametersLwOrder() { new CustomDrawingParserImpl("drawLine(1,2,3,4) lw=25 lw=35 lt=- lw=5 fg=pink lw=1", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawLineToString(1, 2, 3, 4, ColorOwn.forString("pink", Transparency.FOREGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test(expected = CustomDrawingParserRuntimeException.class) public void invalidDrawLineParameterBg() { new CustomDrawingParserImpl("drawLine(1,2,3,4) bg=red", 0, 0, drawHandler).parse(); } @Test public void drawRectangleParameters() { new CustomDrawingParserImpl("drawRectangle(0,0,width,height) lt=- lw=25 bg=black fg=pink", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawRectangleToString(0, 0, 30, 40, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } /** * draw Method doesn't override settings, but should use the previous set options */ @Test public void drawRectangleParametersNoDefaultUsed() { ColorOwn fg = ColorOwn.ORANGE; ColorOwn bg = ColorOwn.DARK_GRAY.transparency(Transparency.BACKGROUND); LineType lt = LineType.DOUBLE_DOTTED; double lw = 10; drawHandler.setForegroundColor(fg); drawHandler.setBackgroundColor(bg); drawHandler.setLineType(lt); drawHandler.setLineWidth(lw); new CustomDrawingParserImpl("drawRectangle(0,0,width,height)", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawRectangleToString(0, 0, 30, 40, fg, bg, lt, lw), drawHandler.getLastDrawCall()); assertEquals(fg, drawHandler.getForegroundColor()); assertEquals(bg, drawHandler.getBackgroundColor()); assertEquals(lt, drawHandler.getLineType()); assertEquals(lw, drawHandler.getLineWidth(), 0.01); } /** * check if the values are reset to the previous set values */ @Test public void drawRectangleParametersNoDefaultOverrideReset() { ColorOwn fg = ColorOwn.ORANGE; ColorOwn bg = ColorOwn.DARK_GRAY.transparency(Transparency.BACKGROUND); LineType lt = LineType.DOUBLE_DOTTED; double lw = 10; drawHandler.setForegroundColor(fg); drawHandler.setBackgroundColor(bg); drawHandler.setLineType(lt); drawHandler.setLineWidth(lw); new CustomDrawingParserImpl("drawRectangle(0,0,width,height) lt=- lw=25 bg=black fg=pink", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawRectangleToString(0, 0, 30, 40, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); assertEquals(fg, drawHandler.getForegroundColor()); assertEquals(bg, drawHandler.getBackgroundColor()); assertEquals(lt, drawHandler.getLineType()); assertEquals(lw, drawHandler.getLineWidth(), 0.01); } @Test public void drawRectangleParametersBgOrder() { new CustomDrawingParserImpl("drawRectangle(0,0,width,height) bg=black lt=- bg=red lw=25 bg=blue fg=pink bg=#AAFFBB", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawRectangleToString(0, 0, 30, 40, ColorOwn.forString("pink", Transparency.FOREGROUND), ColorOwn.forString("black", Transparency.BACKGROUND), LineType.SOLID, 25.0), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawRectangleRoundParameters() { new CustomDrawingParserImpl("drawRectangleRound(0,0,width,height,2) bg=#FF10A0 fg=#040506 lt=. lw=2.5", 30, 40, drawHandler).parse(); assertEquals(DummyDrawHandler.drawRectangleRoundToString(0, 0, 30, 40, 2, ColorOwn.forString("#040506", Transparency.FOREGROUND), ColorOwn.forString("#FF10A0", Transparency.BACKGROUND), LineType.DASHED, 2.5), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawTextParameterFg() { new CustomDrawingParserImpl("drawText(\"Das ist \\\" dfs \", 10, 20, left ) fg=red", 0, 0, drawHandler).parse(); assertEquals(DummyDrawHandler.drawTextToString("Das ist \" dfs ", 10, 20, AlignHorizontal.LEFT, ColorOwn.RED), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test public void drawTextParameterFgFg() { new CustomDrawingParserImpl("drawText(\"Das ist \\\" dfs \", 10, 20, left ) fg=pink fg=blue", 0, 0, drawHandler).parse(); assertEquals(DummyDrawHandler.drawTextToString("Das ist \" dfs ", 10, 20, AlignHorizontal.LEFT, ColorOwn.PINK), drawHandler.getLastDrawCall()); checkDefaultSettingsRestored(); } @Test(expected = CustomDrawingParserRuntimeException.class) public void invalidDrawTextParameterBg() { new CustomDrawingParserImpl("drawText(\"Test\",2,3,center) bg=red", 0, 0, drawHandler).parse(); } @Test(expected = CustomDrawingParserRuntimeException.class) public void invalidDrawTextParameterLt() { new CustomDrawingParserImpl("drawText(\"Test\",width / 2, height/2, right) lt=.", 100, 200, drawHandler).parse(); } @Test(expected = CustomDrawingParserRuntimeException.class) public void invalidDrawTextParameterLw() { new CustomDrawingParserImpl("drawText(\" äöüß ÄÖÜ ,. #+? \",50,100,right) lw=12", 0, 0, drawHandler).parse(); } private void checkDefaultSettingsRestored() { assertEquals(DummyDrawHandler.defaultFg, drawHandler.getForegroundColor()); assertEquals(DummyDrawHandler.defaultBg, drawHandler.getBackgroundColor()); assertEquals(DummyDrawHandler.defaultLineType, drawHandler.getLineType()); assertEquals(DummyDrawHandler.defaultLineWidth, drawHandler.getLineWidth(), 0.01); } }