109 lines
3.5 KiB
Java
109 lines
3.5 KiB
Java
package jmri.jmrit.display.controlPanelEditor.shape;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
import java.awt.Point;
|
|
|
|
import jmri.jmrit.display.controlPanelEditor.ControlPanelEditor;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.ThreadingUtil;
|
|
import jmri.util.junit.annotations.DisabledIfHeadless;
|
|
|
|
import org.netbeans.jemmy.Timeout;
|
|
import org.netbeans.jemmy.operators.*;
|
|
import org.netbeans.jemmy.drivers.input.MouseRobotDriver;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
@DisabledIfHeadless
|
|
public class ShapeDrawerTest {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
|
|
ControlPanelEditor frame = new ControlPanelEditor();
|
|
ShapeDrawer t = new ShapeDrawer(frame);
|
|
assertNotNull( t, "exists");
|
|
frame.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testCreateCircleFromShapeDrawerMenu() {
|
|
ControlPanelEditor frame = new ControlPanelEditor("CPE ShapeDrawerTest");
|
|
ShapeDrawer t = new ShapeDrawer(frame);
|
|
assertNotNull( t, "exists");
|
|
|
|
ThreadingUtil.runOnGUI( () -> {
|
|
frame.setVisible(true);
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator("CPE ShapeDrawerTest");
|
|
assertNotNull(jfo);
|
|
|
|
JMenuBarOperator jmbo = new JMenuBarOperator(jfo);
|
|
assertNotNull(jmbo);
|
|
|
|
JMenuOperator jmo = new JMenuOperator(jmbo, 7);
|
|
assertEquals(6, jmo.getMenuComponentCount(), "all shapes in menu");
|
|
|
|
var addCircleButton = jmo.getItem(3);
|
|
assertEquals( Bundle.getMessage("drawSth", Bundle.getMessage("Circle")), addCircleButton.getText());
|
|
|
|
JMenuItemOperator addCircleMenuItem = new JMenuItemOperator(addCircleButton);
|
|
addCircleMenuItem.doClick();
|
|
addCircleMenuItem.getQueueTool().waitEmpty();
|
|
|
|
JUnitUtil.waitFor(500);
|
|
// Msg to user : Drag a selection rectangle to hold the circle
|
|
|
|
// CPE now expects a rectangle to be drawn within the Frame to place the circle
|
|
// we first select a point at top left, then drag it to bottom right.
|
|
// Once this rectangle is drawn, the DrawCircle Frame is visible.
|
|
MouseRobotDriver mouseDriver = new MouseRobotDriver(new Timeout("Mouse", 1000L)); // 1 000 ms.
|
|
|
|
// Start and end points, relative to the frame
|
|
Point start = new Point(130, 130); // pad out to avoid menu bar
|
|
Point end = new Point(160, 160);
|
|
|
|
// move mouse to start point
|
|
mouseDriver.moveMouse(jfo, start.x, start.y);
|
|
|
|
// Simulate left mouse press at start point
|
|
mouseDriver.pressMouse(jfo, start.x, start.y,
|
|
java.awt.event.InputEvent.BUTTON1_DOWN_MASK, 0);
|
|
|
|
// Simulate drag (mouse moved while pressed)
|
|
mouseDriver.moveMouse(jfo, end.x, end.y);
|
|
|
|
// Simulate mouse release at end point
|
|
mouseDriver.releaseMouse(jfo, end.x, end.y,
|
|
java.awt.event.InputEvent.BUTTON1_DOWN_MASK, 0);
|
|
|
|
JFrameOperator jfoCircleEditor = new JFrameOperator("Edit Circle Shape");
|
|
JButtonOperator jbo = new JButtonOperator(jfoCircleEditor, Bundle.getMessage("ButtonDone"));
|
|
jbo.doClick();
|
|
jbo.getQueueTool().waitEmpty();
|
|
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(ShapeDrawerTest.class);
|
|
|
|
}
|