package jmri.jmrit.operations.trains.gui; import java.text.MessageFormat; import org.junit.Assert; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import jmri.InstanceManager; import jmri.jmrit.operations.OperationsTestCase; import jmri.jmrit.operations.locations.Location; import jmri.jmrit.operations.locations.LocationManager; import jmri.jmrit.operations.routes.*; import jmri.jmrit.operations.trains.Train; import jmri.jmrit.operations.trains.TrainManager; import jmri.util.*; import jmri.util.swing.JemmyUtil; /** * * @author Paul Bender Copyright (C) 2017 */ @jmri.util.junit.annotations.DisabledIfHeadless public class TrainEditFrameTest extends OperationsTestCase { @Test public void testCTor() { Train train1 = new Train("TESTTRAINID", "TESTTRAINNAME"); TrainEditFrame f = new TrainEditFrame(train1); Assert.assertNotNull("exists", f); JUnitUtil.dispose(f); } @Test public void testTrainEditFrame() { TrainEditFrame trainEditFrame = new TrainEditFrame(null); trainEditFrame.setTitle("Test Edit Train Frame"); ThreadingUtil.runOnGUI(() -> { // fill in name and description fields trainEditFrame.trainNameTextField.setText("Test Train Name"); trainEditFrame.trainDescriptionTextField.setText("Test Train Description"); trainEditFrame.commentTextArea.setText("Test Train Comment"); trainEditFrame.dayBox.setSelectedItem("2"); trainEditFrame.hourBox.setSelectedItem("15"); trainEditFrame.minuteBox.setSelectedItem("45"); }); JemmyUtil.enterClickAndLeave(trainEditFrame.addTrainButton); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Test Train Name"); Assert.assertNotNull("train exists", train); // test defaults Assert.assertEquals("train name", "Test Train Name", train.getName()); Assert.assertEquals("train description", "Test Train Description", train.getDescription()); Assert.assertEquals("train comment", "Test Train Comment", train.getCommentWithColor()); Assert.assertEquals("train depart time", "2:15:45", train.getDepartureTime()); Assert.assertEquals("train route", null, train.getRoute()); Assert.assertTrue("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); Assert.assertEquals("train roads", Train.ALL_ROADS, train.getCarRoadOption()); Assert.assertEquals("train requirements", Train.NO_CABOOSE_OR_FRED, train.getRequirements()); // no route, should cause pop up dialog JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.saveTrainButton); // clear no route dialog box JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("TrainNoRoute"), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); // test route field, 5 routes and a blank Assert.assertEquals("Route Combobox item count", 6, trainEditFrame.routeBox.getItemCount()); ThreadingUtil.runOnGUI(() -> { trainEditFrame.routeBox.setSelectedIndex(3); // the 3rd item should be "Test Route C" }); // save should work now JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.saveTrainButton); Assert.assertEquals("train depart time", "2:15:45", train.getDepartureTime()); Assert.assertEquals("train route", "Test Route C", train.getRoute().getName()); // test route edit button JemmyUtil.enterClickAndLeave(trainEditFrame.editButton); // confirm panel creation JmriJFrame ref = JmriJFrame.getFrame(Bundle.getMessage("TitleRouteEdit")); Assert.assertNotNull("route add frame", ref); // increase screen size so clear and set buttons are shown ThreadingUtil.runOnGUI(() -> { trainEditFrame.setLocation(10, 0); trainEditFrame.setSize(trainEditFrame.getWidth(), trainEditFrame.getHeight() + 200); }); // test car types using the clear and set buttons JemmyUtil.enterClickAndLeave(trainEditFrame.clearButton); Assert.assertFalse("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); JemmyUtil.enterClickAndLeave(trainEditFrame.setButton); Assert.assertTrue("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); // test engine fields Assert.assertEquals("number of engines", "0", train.getNumberEngines()); Assert.assertEquals("engine model", "", train.getEngineModel()); Assert.assertEquals("engine road", "", train.getEngineRoad()); // now change them ThreadingUtil.runOnGUI(() -> { trainEditFrame.numEnginesBox.setSelectedItem("3"); trainEditFrame.modelEngineBox.setSelectedItem("FT"); trainEditFrame.roadEngineBox.setSelectedItem("UP"); }); // shouldn't change until Save Assert.assertEquals("number of engines 1", "0", train.getNumberEngines()); Assert.assertEquals("engine model 1", "", train.getEngineModel()); Assert.assertEquals("engine road 1", "", train.getEngineRoad()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); // confirm changes Assert.assertEquals("number of engines 2", "3", train.getNumberEngines()); Assert.assertEquals("engine model 2", "FT", train.getEngineModel()); Assert.assertEquals("engine road 2", "UP", train.getEngineRoad()); // test caboose and FRED buttons and fields // require a car with FRED JemmyUtil.enterClickAndLeave(trainEditFrame.fredRadioButton); // shouldn't change until Save Assert.assertEquals("train requirements 1", Train.NO_CABOOSE_OR_FRED, train.getRequirements()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train requirements FRED", Train.FRED, train.getRequirements()); JemmyUtil.enterClickAndLeave(trainEditFrame.cabooseRadioButton); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train depart time", "2:15:45", train.getDepartureTime()); Assert.assertEquals("train requirements Caboose", Train.CABOOSE, train.getRequirements()); Assert.assertEquals("caboose road 1", "", train.getCabooseRoad()); // shouldn't change until Save String roadNames[] = Bundle.getMessage("carRoadNames").split(","); ThreadingUtil.runOnGUI(() -> { trainEditFrame.roadCabooseBox.setSelectedItem(roadNames[2]); }); Assert.assertEquals("caboose road", "", train.getCabooseRoad()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("caboose road new", roadNames[2], train.getCabooseRoad()); // remove Caboose or FRED requirement JemmyUtil.enterClickAndLeave(trainEditFrame.noneRadioButton); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train requirements 4", Train.NO_CABOOSE_OR_FRED, train.getRequirements()); // test frame size and location ThreadingUtil.runOnGUI(() -> { trainEditFrame.setSize(650, 600); trainEditFrame.setLocation(25, 30); }); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); // test delete button // the delete opens a dialog window to confirm the delete JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.deleteTrainButton); // don't delete, we need this train for the next two tests // testTrainBuildOptionFrame() and testTrainEditFrameRead() JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("deleteTrain"), Bundle.getMessage("ButtonNo")); JemmyUtil.waitFor(trainEditFrame); ThreadingUtil.runOnGUI(() -> { JUnitUtil.dispose(ref); JUnitUtil.dispose(trainEditFrame); }); // now reload the window Train t2 = tmanager.getTrainByName("Test Train Name"); Assert.assertNotNull(t2); // change the train so it doesn't match the add test t2.setRequirements(Train.CABOOSE); t2.setCabooseRoad("CP"); TrainEditFrame f = new TrainEditFrame(t2); f.setTitle("Test Edit Train Frame"); Assert.assertEquals("train name", "Test Train Name", f.trainNameTextField.getText()); Assert.assertEquals("train description", "Test Train Description", f.trainDescriptionTextField.getText()); Assert.assertEquals("train comment", "Test Train Comment", f.commentTextArea.getText()); Assert.assertEquals("train depart day", "2", f.dayBox.getSelectedItem()); Assert.assertEquals("train depart hour", "15", f.hourBox.getSelectedItem()); Assert.assertEquals("train depart minute", "45", f.minuteBox.getSelectedItem()); Assert.assertEquals("train route", t2.getRoute(), f.routeBox.getSelectedItem()); Assert.assertEquals("number of engines", "3", f.numEnginesBox.getSelectedItem()); Assert.assertEquals("engine model", "FT", f.modelEngineBox.getSelectedItem()); Assert.assertEquals("engine road", "UP", f.roadEngineBox.getSelectedItem()); Assert.assertEquals("caboose road", "CP", f.roadCabooseBox.getSelectedItem()); // check radio buttons Assert.assertTrue("caboose selected", f.cabooseRadioButton.isSelected()); Assert.assertFalse("none selected", f.noneRadioButton.isSelected()); Assert.assertFalse("FRED selected", f.fredRadioButton.isSelected()); ThreadingUtil.runOnGUI(() -> { JUnitUtil.dispose(f); }); } @Test public void testTrainEditFrameAddButton() { TrainEditFrame trainEditFrame = new TrainEditFrame(null); trainEditFrame.setTitle("Test Add Button Train Frame"); // fill in name and description fields trainEditFrame.trainNameTextField.setText("Test Add Train Name"); trainEditFrame.trainDescriptionTextField.setText("Test Train Description"); trainEditFrame.commentTextArea.setText("Test Train Comment"); JemmyUtil.enterClickAndLeave(trainEditFrame.addTrainButton); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Test Add Train Name"); Assert.assertNotNull("train exists", train); // test defaults Assert.assertEquals("train name", "Test Add Train Name", train.getName()); Assert.assertEquals("train description", "Test Train Description", train.getDescription()); Assert.assertEquals("train comment", "Test Train Comment", train.getCommentWithColor()); Assert.assertEquals("train depart time", "0:00:00", train.getDepartureTime()); Assert.assertEquals("train route", null, train.getRoute()); Assert.assertTrue("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); Assert.assertEquals("train roads", Train.ALL_ROADS, train.getCarRoadOption()); Assert.assertEquals("train requirements", Train.NO_CABOOSE_OR_FRED, train.getRequirements()); JUnitUtil.dispose(trainEditFrame); // test that you can't add a train with the same name trainEditFrame = new TrainEditFrame(null); trainEditFrame.setTitle("Test Edit Train Frame"); // fill in name and description fields trainEditFrame.trainNameTextField.setText("Test Add Train Name"); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.addTrainButton); // clear can not add train dialog box JemmyUtil.pressDialogButton(trainEditFrame, MessageFormat.format(Bundle.getMessage("CanNot"), new Object[] { Bundle.getMessage("add") }), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); JUnitUtil.dispose(trainEditFrame); } @Test public void testTrainEditFrameAddButtonTrainNameTooLong() { TrainEditFrame trainEditFrame = new TrainEditFrame(null); trainEditFrame.setTitle("Test Add Button Train Frame"); // fill in name and description fields trainEditFrame.trainNameTextField.setText("Test Add Train Name Too Long More Than 25 Characters"); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.addTrainButton); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Test Add Train Name Too Long More Than 25 Characters"); Assert.assertNull("train does not exist", train); // clear can not add train dialog box JemmyUtil.pressDialogButton(trainEditFrame, MessageFormat.format(Bundle.getMessage("CanNot"), new Object[] { Bundle.getMessage("add") }), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); JUnitUtil.dispose(trainEditFrame); } @Test public void testTrainEditFrameAddButtonTrainNameSpecialCharacter() { TrainEditFrame trainEditFrame = new TrainEditFrame(null); trainEditFrame.setTitle("Test Add Button Train Frame"); // fill in name and description fields trainEditFrame.trainNameTextField.setText("Not this character :"); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.addTrainButton); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Not this character :"); Assert.assertNull("train does not exist", train); // clear can not add train dialog box JemmyUtil.pressDialogButton(trainEditFrame, MessageFormat.format(Bundle.getMessage("CanNot"), new Object[] { Bundle.getMessage("add") }), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); jmri.util.JUnitAppender.assertErrorMessage("Train name must not contain reserved characters"); JUnitUtil.dispose(trainEditFrame); } /** * Test that you can't save using an existing train's name */ @Test public void testTrainEditFrameSaveExistingTrain() { TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Test_Train 1"); Assert.assertNotNull(train); Train train2 = tmanager.getTrainByName("Test_Train 2"); Assert.assertNotNull(train2); TrainEditFrame trainEditFrame = new TrainEditFrame(train); trainEditFrame.setTitle("Test Save Train Frame"); trainEditFrame.trainNameTextField.setText("Test_Train 2"); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.saveTrainButton); // And now press the confirmation button JemmyUtil.pressDialogButton(trainEditFrame, MessageFormat.format(Bundle.getMessage("CanNot"), new Object[] { Bundle.getMessage("save") }), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); JUnitUtil.dispose(trainEditFrame); } @Test public void testTrainEditFrameSaveButton() { // create a train TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.newTrain("Test Train Save Button"); Assert.assertNotNull(train); // give the train a route with one location RouteManager rmanager = InstanceManager.getDefault(RouteManager.class); Route routeB = rmanager.getRouteByName("Test Route B"); Location loc = InstanceManager.getDefault(LocationManager.class).getLocationByName("Test_Location 1"); Assert.assertNotNull("Confirm location exsists", loc); RouteLocation rB = routeB.addLocation(loc); rB.setDepartureTime("0", "10", "12"); train.setRoute(routeB); train.setDescription("Test Train Save Button Description"); train.setComment("Test Train Save Button Comment"); train.setRequirements(Train.CABOOSE); train.setNumberEngines("2"); train.setEngineModel("GP40"); train.setEngineRoad("PU"); train.setCabooseRoad("CP"); TrainEditFrame trainEditFrame = new TrainEditFrame(train); trainEditFrame.setTitle("Test Edit Train Frame"); Assert.assertEquals("train name", "Test Train Save Button", trainEditFrame.trainNameTextField.getText()); Assert.assertEquals("train description", "Test Train Save Button Description", trainEditFrame.trainDescriptionTextField.getText()); Assert.assertEquals("train comment", "Test Train Save Button Comment", trainEditFrame.commentTextArea.getText()); Assert.assertEquals("train depart day", "0", trainEditFrame.dayBox.getSelectedItem()); Assert.assertEquals("train depart hour", "10", trainEditFrame.hourBox.getSelectedItem()); Assert.assertEquals("train depart minute", "12", trainEditFrame.minuteBox.getSelectedItem()); Assert.assertEquals("train route", train.getRoute(), trainEditFrame.routeBox.getSelectedItem()); Assert.assertEquals("number of engines", "2", trainEditFrame.numEnginesBox.getSelectedItem()); Assert.assertEquals("engine model", "GP40", trainEditFrame.modelEngineBox.getSelectedItem()); Assert.assertEquals("engine road", "PU", trainEditFrame.roadEngineBox.getSelectedItem()); Assert.assertEquals("caboose road", "CP", trainEditFrame.roadCabooseBox.getSelectedItem()); // check radio buttons Assert.assertTrue("caboose selected", trainEditFrame.cabooseRadioButton.isSelected()); Assert.assertFalse("none selected", trainEditFrame.noneRadioButton.isSelected()); Assert.assertFalse("FRED selected", trainEditFrame.fredRadioButton.isSelected()); // test departure time fields Assert.assertFalse("Confirm day is disabled", trainEditFrame.dayBox.isEnabled()); Assert.assertFalse("Confirm hour is disabled", trainEditFrame.hourBox.isEnabled()); Assert.assertFalse("Confirm minute is disabled", trainEditFrame.minuteBox.isEnabled()); Assert.assertEquals("train departure time", "0:10:12", train.getDepartureTime()); // test route field, 5 routes and a blank Assert.assertEquals("Route Combobox item count", 6, trainEditFrame.routeBox.getItemCount()); trainEditFrame.routeBox.setSelectedIndex(3); // the 3rd item should be "Test Route C" Assert.assertTrue("Confirm day is enabled", trainEditFrame.dayBox.isEnabled()); Assert.assertTrue("Confirm hour is enabled", trainEditFrame.hourBox.isEnabled()); Assert.assertTrue("Confirm minute is enabled", trainEditFrame.minuteBox.isEnabled()); Assert.assertEquals("train depart hour", "00", trainEditFrame.hourBox.getSelectedItem()); Assert.assertEquals("train depart minute", "00", trainEditFrame.minuteBox.getSelectedItem()); Assert.assertEquals("train route", "Test Route C", train.getRoute().getName()); // test route edit button JemmyUtil.enterClickAndLeave(trainEditFrame.editButton); // confirm panel creation JmriJFrame ref = JmriJFrame.getFrame(Bundle.getMessage("TitleRouteEdit")); Assert.assertNotNull("route add frame", ref); // increase screen size so clear and set buttons are shown trainEditFrame.setLocation(10, 0); trainEditFrame.setSize(trainEditFrame.getWidth(), trainEditFrame.getHeight() + 200); // test car types using the clear and set buttons JemmyUtil.enterClickAndLeave(trainEditFrame.clearButton); Assert.assertFalse("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); JemmyUtil.enterClickAndLeave(trainEditFrame.setButton); Assert.assertTrue("train accepts car type Boxcar", train.isTypeNameAccepted("Boxcar")); // now change them // ThreadingUtil.runOnGUI(() -> { trainEditFrame.numEnginesBox.setSelectedItem("3"); trainEditFrame.modelEngineBox.setSelectedItem("FT"); trainEditFrame.roadEngineBox.setSelectedItem("UP"); // }); // shouldn't change until Save Assert.assertEquals("number of engines 1", "2", train.getNumberEngines()); Assert.assertEquals("engine model 1", "GP40", train.getEngineModel()); Assert.assertEquals("engine road 1", "PU", train.getEngineRoad()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); // confirm changes Assert.assertEquals("number of engines 2", "3", train.getNumberEngines()); Assert.assertEquals("engine model 2", "FT", train.getEngineModel()); Assert.assertEquals("engine road 2", "UP", train.getEngineRoad()); // test caboose and FRED buttons and fields // require a car with FRED JemmyUtil.enterClickAndLeave(trainEditFrame.fredRadioButton); // shouldn't change until Save Assert.assertEquals("train requirements", Train.CABOOSE, train.getRequirements()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train requirements FRED", Train.FRED, train.getRequirements()); JemmyUtil.enterClickAndLeave(trainEditFrame.cabooseRadioButton); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train requirements Caboose", Train.CABOOSE, train.getRequirements()); Assert.assertEquals("caboose road 1", "", train.getCabooseRoad()); // shouldn't change until Save String roadNames[] = Bundle.getMessage("carRoadNames").split(","); // ThreadingUtil.runOnGUI(() -> { trainEditFrame.roadCabooseBox.setSelectedItem(roadNames[2]); // }); Assert.assertEquals("caboose road", "", train.getCabooseRoad()); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("caboose road new", roadNames[2], train.getCabooseRoad()); // remove Caboose or FRED requirement JemmyUtil.enterClickAndLeave(trainEditFrame.noneRadioButton); JemmyUtil.enterClickAndLeave(trainEditFrame.saveTrainButton); Assert.assertEquals("train requirements 4", Train.NO_CABOOSE_OR_FRED, train.getRequirements()); // test delete button // the delete opens a dialog window to confirm the delete JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.deleteTrainButton); JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("deleteTrain"), Bundle.getMessage("ButtonNo")); JemmyUtil.waitFor(trainEditFrame); // confirm that train wasn't deleted Train t2 = tmanager.getTrainByName("Test Train Save Button"); Assert.assertNotNull(t2); JUnitUtil.dispose(ref); JUnitUtil.dispose(trainEditFrame); } @Test public void testTrainEditFrameNoRoute() { // create a train TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.newTrain("Test Train No Route"); Assert.assertNotNull(train); TrainEditFrame trainEditFrame = new TrainEditFrame(train); JemmyUtil.waitFor(trainEditFrame); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.saveTrainButton); // clear no route dialog box JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("TrainNoRoute"), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); JUnitUtil.dispose(trainEditFrame); } @Test public void testTrainEditFrameNoName() { // create a train TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.newTrain("Test Train No Name"); Assert.assertNotNull(train); // give the train a route RouteManager rmanager = InstanceManager.getDefault(RouteManager.class); Route routeB = rmanager.getRouteByName("Test Route B"); train.setRoute(routeB); TrainEditFrame trainEditFrame = new TrainEditFrame(train); trainEditFrame.setTitle("Test Edit Train Frame"); trainEditFrame.trainNameTextField.setText(""); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.saveTrainButton); // clear can not save train JemmyUtil.pressDialogButton(trainEditFrame, MessageFormat.format(Bundle.getMessage("CanNot"), new Object[] { Bundle.getMessage("save") }), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); JUnitUtil.dispose(trainEditFrame); } /** * Test that delete train works */ @Test public void testTrainEditFrameDelete() { TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainByName("Test_Train 1"); Assert.assertNotNull(train); TrainEditFrame trainEditFrame = new TrainEditFrame(train); trainEditFrame.setTitle("Test Delete Train Frame"); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.deleteTrainButton); // And now press the confirmation button JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("deleteTrain"), Bundle.getMessage("ButtonYes")); JemmyUtil.waitFor(trainEditFrame); train = tmanager.getTrainByName("Test_Train 1"); Assert.assertNull("train deleted", train); // Now add it back JemmyUtil.enterClickAndLeave(trainEditFrame.addTrainButton); train = tmanager.getTrainByName("Test_Train 1"); Assert.assertNotNull("train added", train); JUnitUtil.dispose(trainEditFrame); } /** * Test that you can't delete a built train */ @Test public void testTrainEditDeleteBuilt() { JUnitOperationsUtil.initOperationsData(); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train = tmanager.getTrainById("1"); Assert.assertNotNull(train); TrainEditFrame trainEditFrame = new TrainEditFrame(train); trainEditFrame.setTitle("Test Delete Train Built"); train.build(); Assert.assertTrue("Train built", train.isBuilt()); JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.deleteTrainButton); // warning dialog JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("CanNotDeleteTrain"), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); train = tmanager.getTrainById("1"); Assert.assertNotNull("train not deleted", train); JUnitUtil.dispose(trainEditFrame); JUnitOperationsUtil.checkOperationsShutDownTask(); } /** * Test the reset train button */ @Test public void testTrainEditFrameReset() { JUnitOperationsUtil.initOperationsData(); TrainManager tmanager = InstanceManager.getDefault(TrainManager.class); Train train1 = tmanager.getTrainById("1"); Assert.assertNotNull(train1); train1.build(); Assert.assertTrue("Train status", train1.isBuilt()); TrainEditFrame trainEditFrame = new TrainEditFrame(train1); trainEditFrame.setTitle("Test Reset Train Frame"); JemmyUtil.enterClickAndLeave(trainEditFrame.resetButton); Assert.assertFalse("Train status", train1.isBuilt()); // now test trying to reset a train that is en-route train1.build(); Assert.assertTrue("Train status", train1.isBuilt()); train1.move(); // should fail JemmyUtil.enterClickAndLeaveThreadSafe(trainEditFrame.resetButton); // clear the error dialog JemmyUtil.pressDialogButton(trainEditFrame, Bundle.getMessage("CanNotResetTrain"), Bundle.getMessage("ButtonOK")); JemmyUtil.waitFor(trainEditFrame); Assert.assertTrue("Train status", train1.isBuilt()); JUnitUtil.dispose(trainEditFrame); JUnitOperationsUtil.checkOperationsShutDownTask(); } @Test public void testCloseWindowOnSave() { Train train = new Train("TESTTRAINID", "TESTTRAINNAME"); Route route = new Route("ROUTEID","ROUTENAME"); train.setRoute(route); TrainEditFrame f = new TrainEditFrame(train); JUnitOperationsUtil.testCloseWindowOnSave(f.getTitle()); } @Override @BeforeEach public void setUp() { super.setUp(); JUnitOperationsUtil.loadTrains(); } // private static final Logger log = // LoggerFactory.getLogger(TrainEditFrameTest.class); }