package test.gui; import com.google.inject.AbstractModule; import com.google.inject.Provides; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.Spinner; import javafx.scene.control.TextField; import net.sf.latexdraw.instruments.DrawingPropertiesCustomiser; import net.sf.latexdraw.instruments.Hand; import net.sf.latexdraw.models.ShapeFactory; import net.sf.latexdraw.models.interfaces.shape.IDrawing; import net.sf.latexdraw.view.latex.LaTeXGenerator; import net.sf.latexdraw.view.latex.VerticalPosition; import net.sf.latexdraw.view.pst.PSTCodeGenerator; import org.junit.Before; import org.junit.Test; import test.gui.robot.FxRobotListSelection; import test.gui.robot.FxRobotSpinner; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; public class TestDrawingPropGUI extends TestLatexdrawGUI implements FxRobotSpinner, FxRobotListSelection { TextField titleField; TextField labelField; CheckBox middleHorizPosCB; ComboBox<VerticalPosition> positionCB; Spinner<Double> scaleField; DrawingPropertiesCustomiser ins; LaTeXGenerator gen; final GUIVoidCommand typeLabel = () -> clickOn(labelField).write("newLabel"); final GUIVoidCommand typeTitle = () -> clickOn(titleField).write("new Title"); final GUIVoidCommand changeScale = () -> incrementSpinner(scaleField); final GUIVoidCommand checkMiddleHoriz = () -> clickOn(middleHorizPosCB); final GUICommand<VerticalPosition> changePosition = pos -> selectGivenComboBoxItem(positionCB, pos); @Override public String getFXMLPathFromLatexdraw() { return "/fxml/DrawingProps.fxml"; } @Override protected AbstractModule createModule() { return new ShapePropModule() { @Override protected void configure() { super.configure(); hand = mock(Hand.class); bind(PSTCodeGenerator.class).asEagerSingleton(); bind(DrawingPropertiesCustomiser.class).asEagerSingleton(); } @Provides LaTeXGenerator provideLaTeXGenerator(final PSTCodeGenerator gen) { return gen; } }; } @Override @Before public void setUp() { super.setUp(); titleField = find("#titleField"); labelField = find("#labelField"); middleHorizPosCB = find("#middleHorizPosCB"); positionCB = find("#positionCB"); scaleField = find("#scaleField"); ((IDrawing) guiceFactory.call(IDrawing.class)).addShape(ShapeFactory.INST.createCircle()); ins = (DrawingPropertiesCustomiser) guiceFactory.call(DrawingPropertiesCustomiser.class); gen = (LaTeXGenerator) guiceFactory.call(LaTeXGenerator.class); ins.setActivated(true); } @Test public void testSetCaption() throws Exception { new CompositeGUIVoidCommand(typeTitle, waitFX1Second).execute(); assertEquals("new Title", gen.getCaption()); } @Test public void testSetLabel() throws Exception { new CompositeGUIVoidCommand(typeLabel, waitFX1Second).execute(); assertEquals("newLabel", gen.getLabel()); } @Test public void testSetScale() throws Exception { changeScale.execute(); assertEquals(scaleField.getValueFactory().getValue(), gen.getScale(), 0.0000001); } @Test public void testSetMiddleHoriz() throws Exception { checkMiddleHoriz.execute(); assertEquals(middleHorizPosCB.isSelected(), gen.isPositionHoriCentre()); } @Test public void testSePositionBOTTOM() throws Exception { changePosition.execute(VerticalPosition.BOTTOM); assertEquals(VerticalPosition.BOTTOM, gen.getPositionVertToken()); } @Test public void testSePositionFLOAT() throws Exception { changePosition.execute(VerticalPosition.FLOATS_PAGE); assertEquals(VerticalPosition.FLOATS_PAGE, gen.getPositionVertToken()); } @Test public void testSePositionHERE() throws Exception { changePosition.execute(VerticalPosition.HERE); assertEquals(VerticalPosition.HERE, gen.getPositionVertToken()); } @Test public void testSePositionHEREHERE() throws Exception { changePosition.execute(VerticalPosition.HERE_HERE); assertEquals(VerticalPosition.HERE_HERE, gen.getPositionVertToken()); } @Test public void testSePositionTOP() throws Exception { changePosition.execute(VerticalPosition.TOP); assertEquals(VerticalPosition.TOP, gen.getPositionVertToken()); } @Test public void testSePositionNONE() throws Exception { changePosition.execute(VerticalPosition.NONE); assertEquals(VerticalPosition.NONE, gen.getPositionVertToken()); } @Test public void testTitledPaneVisible() { assertTrue(titledPane.isVisible()); } }