Files
JIMRI/java/test/jmri/jmrit/display/controlPanelEditor/shape/ShapeDrawerTest.java
T
2026-06-17 14:00:51 +02:00

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);
}