159 lines
5.6 KiB
Java
159 lines
5.6 KiB
Java
package jmri.jmrit.etcs.dmi.swing;
|
|
|
|
import java.beans.PropertyChangeEvent;
|
|
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import org.netbeans.jemmy.operators.*;
|
|
|
|
/**
|
|
* Tests for DmiPanelC.
|
|
* @author Steve Young Copyright (C) 2024
|
|
*/
|
|
@jmri.util.junit.annotations.DisabledIfHeadless
|
|
public class DmiPanelCTest {
|
|
|
|
private boolean ackTriggered = false;
|
|
|
|
@Test
|
|
public void testLevelTransitions() {
|
|
|
|
DmiFrame df = new DmiFrame("testLevelTransitions");
|
|
DmiPanel p = df.getDmiPanel();
|
|
Assertions.assertNotNull(p);
|
|
df.setVisible(true);
|
|
JFrameOperator jfo = new JFrameOperator(df.getTitle());
|
|
|
|
p.setLevelTransition(1, true);
|
|
|
|
ackTriggered = false;
|
|
p.addPropertyChangeListener(DmiPanel.PROP_CHANGE_LEVEL_1_TRANSITION_ACK, (PropertyChangeEvent evt) -> {
|
|
ackTriggered = true;
|
|
Assertions.assertEquals(DmiPanel.PROP_CHANGE_LEVEL_1_TRANSITION_ACK, evt.getPropertyName());
|
|
});
|
|
|
|
JButtonOperator jbo = JemmyUtil.getButtonOperatorByName(jfo, "levelTransitionNotificationButton");
|
|
JUnitUtil.waitFor(() -> jbo.isEnabled(), "button ready");
|
|
jbo.doClick();
|
|
JUnitUtil.waitFor(() -> ackTriggered, "ack change event triggered");
|
|
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testNoAck() {
|
|
DmiFrame df = new DmiFrame("testNoAck");
|
|
DmiPanel p = df.getDmiPanel();
|
|
Assertions.assertNotNull(p);
|
|
df.setVisible(true);
|
|
JFrameOperator jfo = new JFrameOperator(df.getTitle());
|
|
|
|
p.setLevelTransition(1, false);
|
|
|
|
JButtonOperator jbo = JemmyUtil.getButtonOperatorByName(jfo, "levelTransitionNotificationButton");
|
|
Assertions.assertFalse(jbo.isEnabled());
|
|
|
|
// JUnitUtil.waitFor(10000);
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testTunnelStop() {
|
|
ackTriggered = false;
|
|
DmiFrame df = new DmiFrame("testTunnelStop");
|
|
DmiPanel p = df.getDmiPanel();
|
|
Assertions.assertNotNull(p);
|
|
df.setVisible(true);
|
|
JFrameOperator jfo = new JFrameOperator(df.getTitle());
|
|
|
|
p.addPropertyChangeListener(DmiPanel.PROP_CHANGE_TUNNEL_STOP_AREA_ACK, (PropertyChangeEvent evt) -> {
|
|
ackTriggered = true;
|
|
Assertions.assertEquals(DmiPanel.PROP_CHANGE_TUNNEL_STOP_AREA_ACK, evt.getPropertyName());
|
|
});
|
|
// JUnitUtil.waitFor(2000);
|
|
|
|
p.setTunnelStoppingIconVisible(true, true);
|
|
|
|
// JUnitUtil.waitFor(4000);
|
|
JButtonOperator jbo = JemmyUtil.getButtonOperatorByName(jfo, "TunnelStopNotificationButton");
|
|
JUnitUtil.waitFor(() -> jbo.isEnabled(), "button ready");
|
|
jbo.doClick();
|
|
JUnitUtil.waitFor(() -> ackTriggered, "ack change event triggered");
|
|
// JUnitUtil.waitFor(4000);
|
|
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testTunnelCountdownFont(){
|
|
DmiFrame df = new DmiFrame("testTunnelCountdown");
|
|
DmiPanel p = df.getDmiPanel();
|
|
Assertions.assertNotNull(p);
|
|
df.setVisible(true);
|
|
JFrameOperator jfo = new JFrameOperator(df.getTitle());
|
|
p.setTunnelStoppingIconVisible(true, false);
|
|
p.setTunnelStoppingDistance(150);
|
|
// JUnitUtil.waitFor(5000);
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testModeTransitionAcknowledgments() {
|
|
|
|
DmiFrame df = new DmiFrame("testModeTransitionAcknowledgments");
|
|
DmiPanel p = df.getDmiPanel();
|
|
Assertions.assertNotNull(p);
|
|
df.setVisible(true);
|
|
JFrameOperator jfo = new JFrameOperator(df.getTitle());
|
|
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_SHUNTING_ACK, DmiPanel.MODE_SHUNTING, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_TRIP_ACK, DmiPanel.MODE_TRIP, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_ON_SIGHT_ACK, DmiPanel.MODE_ON_SIGHT, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_STAFF_RESPONSIBLE_ACK, DmiPanel.MODE_STAFF_RESPONSIBLE, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_REVERSING_ACK, DmiPanel.MODE_REVERSING, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_UNFITTED_ACK, DmiPanel.MODE_UNFITTED, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_NATIONAL_SYSTEM_ACK, DmiPanel.MODE_NATIONAL_SYSTEM, p);
|
|
checkModeAcknowledge(jfo, DmiPanel.PROP_CHANGE_MODE_LIMITED_SUPERVISION_ACK, DmiPanel.MODE_LIMITED_SUPERVISION, p);
|
|
|
|
//JUnitUtil.waitFor(4000);
|
|
JUnitUtil.dispose(jfo.getWindow());
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
private void checkModeAcknowledge(JFrameOperator jfo, String actionCommand, int mode, DmiPanel p){
|
|
p.setModeAcknowledge(mode);
|
|
ackTriggered = false;
|
|
p.addPropertyChangeListener(actionCommand, (PropertyChangeEvent evt) -> {
|
|
ackTriggered = true;
|
|
Assertions.assertEquals(actionCommand, evt.getPropertyName());
|
|
});
|
|
// JUnitUtil.waitFor(JUnitUtil.getRandom().nextInt(1500));
|
|
|
|
JButtonOperator jbo = JemmyUtil.getButtonOperatorByActionComnmand(jfo, actionCommand);
|
|
JUnitUtil.waitFor(() -> jbo.isEnabled(), "button ready");
|
|
jbo.doClick();
|
|
JUnitUtil.waitFor(() -> ackTriggered, "ack change event triggered");
|
|
|
|
// JUnitUtil.waitFor(JUnitUtil.getRandom().nextInt(1500));
|
|
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|