Files
JIMRI/java/test/jmri/jmrit/beantable/RouteTableActionTest.java
T
2026-06-17 14:00:51 +02:00

172 lines
6.3 KiB
Java

package jmri.jmrit.beantable;
import javax.swing.*;
import jmri.Route;
import jmri.util.JUnitUtil;
import jmri.util.junit.annotations.*;
import jmri.util.swing.JemmyUtil;
import jmri.util.ThreadingUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
import org.netbeans.jemmy.operators.*;
/**
* Tests for the jmri.jmrit.beantable.RouteTableAction class
*
* @author Bob Jacobsen Copyright 2004, 2007
*/
public class RouteTableActionTest extends AbstractTableActionBase<Route> {
@Test
public void testCreate() {
Assert.assertNotNull(a);
}
@Override
public String getTableFrameName() {
return Bundle.getMessage("TitleRouteTable");
}
@Test
public void testConstants() {
// check constraints required by implementation,
// because we assume that the codes are the same as the index
// in a JComboBox
Assert.assertEquals("Route.ONACTIVE", 0, Route.ONACTIVE);
Assert.assertEquals("Route.ONINACTIVE", 1, Route.ONINACTIVE);
Assert.assertEquals("Route.VETOACTIVE", 2, Route.VETOACTIVE);
Assert.assertEquals("Route.VETOINACTIVE", 3, Route.VETOINACTIVE);
}
@Override
@Test
public void testGetClassDescription() {
Assert.assertEquals("Route Table Action class description", "Route Table", a.getClassDescription());
}
/**
* Check the return value of includeAddButton. The table generated by this
* action includes an Add Button.
*/
@Override
@Test
public void testIncludeAddButton() {
Assert.assertTrue("Default include add button", a.includeAddButton());
}
@Test
@DisabledIfHeadless
public void testAddRoute() {
ThreadingUtil.runOnGUI( () -> a.actionPerformed(null)); // show table
JFrame f = JFrameOperator.waitJFrame(Bundle.getMessage("TitleRouteTable"), true, true);
Assert.assertNotNull(f);
ThreadingUtil.runOnGUI( () -> a.addPressed(null));
JFrameOperator addFrame = new JFrameOperator(Bundle.getMessage("TitleAddRoute")); // NOI18N
Assert.assertNotNull("Found Add Route Frame", addFrame); // NOI18N
JLabelOperator systemLabel = new JLabelOperator(addFrame,Bundle.getMessage("LabelSystemName"));
new JTextFieldOperator((JTextField)systemLabel.getLabelFor()).setText("105"); // NOI18N
JLabelOperator userLabel = new JLabelOperator(addFrame,Bundle.getMessage("LabelUserName"));
new JTextFieldOperator((JTextField) userLabel.getLabelFor()).setText("Route 105"); // NOI18N
new JButtonOperator(addFrame, Bundle.getMessage("ButtonCreate")).push(); // NOI18N
//new JButtonOperator(addFrame, Bundle.getMessage("ButtonCancel")).push(); // NOI18N
Route chk105 = jmri.InstanceManager.getDefault(jmri.RouteManager.class).getRoute("Route 105"); // NOI18N
Assert.assertNotNull("Verify IO105 Added", chk105); // NOI18N
Assert.assertEquals("Verify system name prefix", "IO105", chk105.getSystemName()); // NOI18N
addFrame.dispose();
JUnitUtil.dispose(f);
}
@Test
@DisabledIfHeadless
public void testEditRoute() {
Assertions.assertTrue(a.includeAddButton());
ThreadingUtil.runOnGUI( () -> a.actionPerformed(null)); // show table
JFrame f = JFrameOperator.waitJFrame(getTableFrameName(), true, true);
JFrameOperator jfo = new JFrameOperator(f);
// find the "Add... " button and press it.
JemmyUtil.pressButton(jfo,Bundle.getMessage("ButtonAdd"));
JFrame f1 = JFrameOperator.waitJFrame(getAddFrameName(), true, true);
JFrameOperator jf = new JFrameOperator(f1);
//enable "Auto System Name" via checkbox
JCheckBoxOperator jcbo = new JCheckBoxOperator(jf,Bundle.getMessage("LabelAutoSysName"));
jcbo.doClick();
//press create button to create a Route, then close the create window
JemmyUtil.pressButton(jf,Bundle.getMessage("ButtonCreate"));
//jf.requestClose();
new org.netbeans.jemmy.QueueTool().waitEmpty();
// press "Edit" button, which is the last column (no heading), to open the Edit Route window
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0,tbl.getColumnCount() -1);
//enter a username in the Edit window
JFrame f2 = JFrameOperator.waitJFrame("Edit Route", true, true);
jf = new JFrameOperator(f2);
JLabelOperator userLabel = new JLabelOperator(jf,Bundle.getMessage("LabelUserName"));
new JTextFieldOperator((JTextField) userLabel.getLabelFor()).typeText("TestRouteUserName");
//press Update to save the Route change
JemmyUtil.pressButton(new JFrameOperator(f2),Bundle.getMessage("ButtonUpdate"));
//retrieve the expected route for verification
Route chkRoute = jmri.InstanceManager.getDefault(jmri.RouteManager.class).getRoute("IO:AUTO:0001"); // NOI18N
Assert.assertEquals("Verify no additional routes were created", 1, tbl.getRowCount()); // NOI18N
Assert.assertNotNull("Verify IO:AUTO:0001 Added", chkRoute); // NOI18N
Assert.assertEquals("Verify system name didn't change", "IO:AUTO:0001", chkRoute.getSystemName()); // NOI18N
Assert.assertEquals("Verify user name is TestRouteUserName", "TestRouteUserName", chkRoute.getUserName()); // NOI18N
JUnitUtil.dispose(f2);
JUnitUtil.dispose(f1);
JUnitUtil.dispose(f);
}
@Override
public String getAddFrameName(){
return Bundle.getMessage("TitleAddRoute");
}
@Test
@Disabled("Route create frame does not have a hardware address")
@ToDo("Re-write parent class test to use the right name")
@Override
public void testAddThroughDialog() {
}
@Test
@Disabled("Route create frame does not have a hardware address")
@ToDo("Re-write parent class test to use the right name, or add without dialog")
@Override
public void testEditButton() {
}
@BeforeEach
@Override
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetProfileManager();
JUnitUtil.initDefaultUserMessagePreferences();
helpTarget = "package.jmri.jmrit.beantable.RouteTable";
a = new RouteTableAction();
}
@AfterEach
@Override
public void tearDown() {
JUnitUtil.tearDown();
}
}