package test.views.jfx;
import java.util.concurrent.TimeoutException;
import javafx.scene.shape.Rectangle;
import net.sf.latexdraw.models.ShapeFactory;
import net.sf.latexdraw.models.interfaces.shape.BorderPos;
import net.sf.latexdraw.models.interfaces.shape.IRectangle;
import net.sf.latexdraw.view.jfx.ViewRectangle;
import org.junit.BeforeClass;
import org.junit.Test;
import org.testfx.api.FxToolkit;
import static org.junit.Assert.assertEquals;
public class TestViewRectangle extends TestViewBorderedShape<ViewRectangle, IRectangle, Rectangle> {
@BeforeClass
public static void beforeClass() throws TimeoutException {
FxToolkit.registerPrimaryStage();
}
@Override
protected IRectangle createModel() {
final IRectangle rec = ShapeFactory.INST.createRectangle();
rec.setWidth(10d);
rec.setHeight(20d);
rec.setX(100d);
rec.setY(200d);
return rec;
}
@Test
public void testXPosition() {
model.setX(123d);
assertEquals(123d, border.getX(), 0.001);
}
@Test
public void testXPositionDbleBordInside() {
model.setX(123d);
model.setBordersPosition(BorderPos.INTO);
assertEquals(123d + model.getThickness(), view.getDbleBorder().get().getX(), 0.001);
}
@Test
public void testXPositionDbleBordMiddle() {
model.setX(123d);
model.setBordersPosition(BorderPos.MID);
assertEquals(123d + model.getThickness(), view.getDbleBorder().get().getX(), 0.001);
}
@Test
public void testXPositionDbleBordOutside() {
model.setX(123d);
model.setBordersPosition(BorderPos.OUT);
assertEquals(123d + model.getThickness(), view.getDbleBorder().get().getX(), 0.001);
}
@Test
public void testYPosition() {
model.setY(-123.4);
assertEquals(-123.4 - model.getHeight(), border.getY(), 0.001);
}
@Test
public void testYPositionDbleBordInside() {
model.setY(-123.4);
model.setBordersPosition(BorderPos.INTO);
assertEquals(border.getY() + model.getThickness(), view.getDbleBorder().get().getY(), 0.001);
}
@Test
public void testYPositionDbleBordMiddle() {
model.setY(-123.4);
model.setBordersPosition(BorderPos.MID);
assertEquals(border.getY() + model.getThickness(), view.getDbleBorder().get().getY(), 0.001);
}
@Test
public void testYPositionDbleBordOutside() {
model.setY(-123.4);
model.setBordersPosition(BorderPos.OUT);
assertEquals(border.getY() + model.getThickness(), view.getDbleBorder().get().getY(), 0.001);
}
@Test
public void testWidth() {
model.setWidth(74.3);
assertEquals(74.3, border.getWidth(), 0.001d);
}
@Test
public void testWidthDbleBordInside() {
model.setWidth(74.3);
model.setBordersPosition(BorderPos.INTO);
assertEquals(border.getWidth() - 2d * model.getThickness(), view.getDbleBorder().get().getWidth(), 0.001);
}
@Test
public void testWidthDbleBordMiddle() {
model.setWidth(74.3);
model.setBordersPosition(BorderPos.MID);
assertEquals(border.getWidth() - 2d * model.getThickness(), view.getDbleBorder().get().getWidth(), 0.001);
}
@Test
public void testWidthDbleBordOutside() {
model.setWidth(74.3);
model.setBordersPosition(BorderPos.OUT);
assertEquals(border.getWidth() - 2d * model.getThickness(), view.getDbleBorder().get().getWidth(), 0.001);
}
@Test
public void testHeight() {
model.setHeight(2d);
assertEquals(2d, border.getHeight(), 0.001);
}
@Test
public void testHeightDbleBordInside() {
model.setHeight(10d);
model.setBordersPosition(BorderPos.INTO);
assertEquals(border.getHeight() - 2d * model.getThickness(), view.getDbleBorder().get().getHeight(), 0.001);
}
@Test
public void testHeightDbleBordMiddle() {
model.setHeight(10d);
model.setBordersPosition(BorderPos.MID);
assertEquals(border.getHeight() - 2d * model.getThickness(), view.getDbleBorder().get().getHeight(), 0.001);
}
@Test
public void testHeightDbleBordOutside() {
model.setHeight(10d);
model.setBordersPosition(BorderPos.OUT);
assertEquals(border.getHeight() - 2d * model.getThickness(), view.getDbleBorder().get().getHeight(), 0.001);
}
@Override
@Test
public void testShadowPositionSameThanBorder() {
model.setHasShadow(true);
assertEquals(border.getX(), view.getShadow().get().getX(), 0.01);
assertEquals(border.getY(), view.getShadow().get().getY(), 0.01);
}
@Test
public void testBorderLineArcWidth() {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getWidth(), getBorder().getArcWidth(), 0.000001);
}
@Test
public void testBorderLineArcHeight() {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getHeight(), getBorder().getArcHeight(), 0.000001);
}
@Test
public void testShadowLineArcWidth() {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getWidth(), getView().getShadow().get().getArcWidth(), 0.000001);
}
@Test
public void testShadowLineArcHeight() {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getHeight(), getView().getShadow().get().getArcHeight(), 0.000001);
}
@Test
public void testDbleLineArcWidth() {
if(getModel().isDbleBorderable()) {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getWidth(), getView().getDbleBorder().get().getArcWidth(), 0.000001);
}
}
@Test
public void testDbleLineArcHeight() {
getModel().setLineArc(0.33);
assertEquals(0.33 * getModel().getHeight(), getView().getDbleBorder().get().getArcHeight(), 0.000001);
}
@Override
@Test
public void testOnTranslateX() {
final double x = getBorder().getX();
model.translate(11d, 0d);
assertEquals(x + 11d, getBorder().getX(), 0.0000001);
}
@Override
@Test
public void testOnTranslateY() {
final double y = getBorder().getY();
model.translate(0d, 13d);
assertEquals(y + 13d, getBorder().getY(), 0.0000001);
}
}