package test.views.jfx;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
import javafx.scene.paint.Paint;
import javafx.scene.shape.PathElement;
import javafx.scene.shape.Shape;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.text.Text;
import net.sf.latexdraw.models.ShapeFactory;
import net.sf.latexdraw.models.interfaces.shape.IGrid;
import net.sf.latexdraw.view.jfx.ViewGrid;
import net.sf.latexdraw.view.latex.DviPsColors;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.testfx.api.FxToolkit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
public class TestViewGrid extends TestViewStdGrid<ViewGrid, IGrid> {
List<PathElement> mainGridBefore;
List<PathElement> subGridBefore;
@BeforeClass
public static void beforeClass() throws TimeoutException {
FxToolkit.registerPrimaryStage();
}
@Override
@Before
public void setUp() {
super.setUp();
mainGridBefore = new ArrayList<>(view.getMaingrid().getElements());
subGridBefore = new ArrayList<>(view.getSubgrid().getElements());
}
@Override
protected IGrid createModel() {
return ShapeFactory.INST.createGrid(ShapeFactory.INST.createPoint(101, 67));
}
@Test
public void testChangeUnit() {
final List<Double> xBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList());
final List<Double> yBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList());
model.setUnit(1.345);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
assertNotEquals(xBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList()));
assertNotEquals(yBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList()));
}
@Test
public void testChangeLabelsColour() {
final Paint strokeBefore = ((Shape) view.getLabels().getChildren().get(0)).getStroke();
model.setGridLabelsColour(DviPsColors.CARNATIONPINK);
assertNotEquals(strokeBefore, ((Shape) view.getLabels().getChildren().get(0)).getStroke());
}
@Test
public void testChangeGridDots() {
model.setGridDots(23);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertEquals(StrokeLineCap.ROUND, view.getMaingrid().getStrokeLineCap());
assertEquals(subGridBefore, view.getSubgrid().getElements());
}
@Test
public void testChangeSubGridDots() {
model.setSubGridDots(21);
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
assertEquals(StrokeLineCap.ROUND, view.getSubgrid().getStrokeLineCap());
assertEquals(mainGridBefore, view.getMaingrid().getElements());
}
@Test
public void testChangeSubGridDiv() {
model.setSubGridDiv(11);
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
assertEquals(mainGridBefore, view.getMaingrid().getElements());
}
@Test
public void testChangeGridWidthImpactOnStrokeWidth() {
final double strokeBefore = view.getMaingrid().getStrokeWidth();
model.setGridWidth(21d);
assertNotEquals(strokeBefore, view.getMaingrid().getStrokeWidth());
}
@Test
public void testChangeGridWidthImpactOnLabels() {
final List<Double> xBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList());
final List<Double> yBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList());
model.setGridWidth(43d);
assertNotEquals(xBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList()));
assertNotEquals(yBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList()));
}
@Test
public void testChangeSubGridWidth() {
final double strokeBefore = view.getSubgrid().getStrokeWidth();
model.setSubGridWidth(11d);
assertNotEquals(strokeBefore, view.getSubgrid().getStrokeWidth());
}
@Test
public void testChangeYLabelWest() {
final List<Double> xBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList());
model.setYLabelWest(!model.isYLabelWest());
assertNotEquals(xBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList()));
}
@Test
public void testChangeXLabelSouth() {
final List<Double> yBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList());
model.setXLabelSouth(!model.isXLabelSouth());
assertNotEquals(yBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList()));
}
@Override
@Test
public void testChangeGridEndX() {
model.setGridEndX(model.getGridEndX() + 1d);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
}
@Override
@Test
public void testChangeGridEndY() {
model.setGridEndY(model.getGridEndY() + 1d);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
}
@Override
@Test
public void testChangeGridStartX() {
model.setGridStartX(model.getGridStartX() - 1d);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
}
@Override
@Test
public void testChangeGridStartY() {
model.setGridStartY(model.getGridStartY() - 1d);
assertNotEquals(mainGridBefore, view.getMaingrid().getElements());
assertNotEquals(subGridBefore, view.getSubgrid().getElements());
}
@Override
@Test
public void testChangeOriginX() {
final List<Double> yBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList());
final List<Double> xBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList());
model.setOriginX(model.getOriginX() + 1d);
assertNotEquals(xBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList()));
assertEquals(yBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList()));
}
@Override
@Test
public void testChangeOriginY() {
final List<Double> yBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList());
final List<Double> xBefore = view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList());
model.setOriginY(model.getOriginY() + 1d);
assertNotEquals(yBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getY()).collect(Collectors.toList()));
assertEquals(xBefore, view.getLabels().getChildren().stream().map(c -> ((Text) c).getX()).collect(Collectors.toList()));
}
@Override
@Test
public void testOnTranslateX() {
final double x = view.getTranslateX();
model.translate(11d, 0d);
assertEquals(x + 11d, view.getTranslateX(), 0.0000001);
}
@Override
@Test
public void testOnTranslateY() {
final double y = view.getTranslateY();
model.translate(0d, 13d);
assertEquals(y + 13d, view.getTranslateY(), 0.0000001);
}
}