172 lines
6.3 KiB
Java
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();
|
|
}
|
|
}
|