Files
2026-06-17 14:00:51 +02:00

641 lines
25 KiB
Java

package jmri.jmrit.operations.trains.gui;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.text.MessageFormat;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.netbeans.jemmy.operators.*;
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.Route;
import jmri.jmrit.operations.routes.RouteManager;
import jmri.jmrit.operations.setup.Control;
import jmri.jmrit.operations.setup.Setup;
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
*/
@Timeout(10)
public class TrainsTableFrameTest extends OperationsTestCase {
@Test
public void testCTor() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
TrainsTableFrame t = new TrainsTableFrame();
Assert.assertNotNull("exists", t);
JUnitUtil.dispose(t);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testCheckboxes() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
Assert.assertEquals("sort by name", TrainsTableModel.TIMECOLUMNNAME, ttf.getSortBy());
Assert.assertTrue("Build Messages", tmanager.isBuildMessagesEnabled());
Assert.assertFalse("Build Report", tmanager.isBuildReportEnabled());
Assert.assertFalse("Print Review", tmanager.isPrintPreviewEnabled());
JemmyUtil.enterClickAndLeave(ttf.showTime);
JemmyUtil.enterClickAndLeave(ttf.showAllBox);
JemmyUtil.enterClickAndLeave(ttf.buildMsgBox);
JemmyUtil.enterClickAndLeave(ttf.buildReportBox);
JemmyUtil.enterClickAndLeave(ttf.saveButton);
Assert.assertFalse("Build Messages 2", tmanager.isBuildMessagesEnabled());
Assert.assertTrue("Build Report 2", tmanager.isBuildReportEnabled());
Assert.assertFalse("Print Review 2", tmanager.isPrintPreviewEnabled());
JemmyUtil.enterClickAndLeave(ttf.showId);
JemmyUtil.enterClickAndLeave(ttf.buildMsgBox);
JemmyUtil.enterClickAndLeave(ttf.printPreviewBox);
JemmyUtil.enterClickAndLeave(ttf.saveButton);
Assert.assertTrue("Build Messages 3", tmanager.isBuildMessagesEnabled());
Assert.assertTrue("Build Report 3", tmanager.isBuildReportEnabled());
Assert.assertTrue("Print Review 3", tmanager.isPrintPreviewEnabled());
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testSwitchListFrame() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// create the TrainSwichListEditFrame
JemmyUtil.enterClickAndLeave(ttf.switchListsButton);
// confirm panel creation
JmriJFrame tsle = JmriJFrame.getFrame(Bundle.getMessage("TitleSwitchLists"));
Assert.assertNotNull("train switchlist edit frame", tsle);
// kill panels
JUnitUtil.dispose(tsle);
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testAddTrain() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// create the TrainEditFrame
JemmyUtil.enterClickAndLeave(ttf.addButton);
// confirm panel creation
JmriJFrame tef = JmriJFrame.getFrame(Bundle.getMessage("TitleTrainAdd"));
Assert.assertNotNull("train edit frame", tef);
// kill panels
JUnitUtil.dispose(tef);
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testTableEditButton() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainsTableAction a = new TrainsTableAction();
a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
TrainsTableFrame ttf = (TrainsTableFrame) JmriJFrame.getFrame(Bundle.getMessage("TitleTrainsTable"));
Assert.assertNotNull(ttf);
ttf.setSize(1200, Control.panelHeight600); // show entire table
// Find new table window
JFrameOperator jfo = new JFrameOperator(ttf);
// Open train edit window
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("ButtonEdit")));
new JFrameOperator("Edit Train");
// find the edit window
JmriJFrame et = JmriJFrame.getFrame("Edit Train");
Assert.assertNotNull(et);
// kill panels
JUnitUtil.dispose(ttf);
// should have disposed the edit train window
et = JmriJFrame.getFrame("Edit Train");
Assert.assertNull(et);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testTableBuildCheckBox() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train0 = tmanager.getTrainByName("Test_Train 0");
Assert.assertNotNull(train0);
Assert.assertTrue("default selected", train0.isBuildEnabled());
Assert.assertEquals("Number of trains", 5, tmanager.getNumEntries());
// improve test coverage by showing built dates
train0.setBuiltEndYear("1956");
TrainsTableAction a = new TrainsTableAction();
a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
TrainsTableFrame ttf = (TrainsTableFrame) JmriJFrame.getFrame(Bundle.getMessage("TitleTrainsTable"));
Assert.assertNotNull(ttf);
ttf.setSize(1200, Control.panelHeight600); // show entire table
// Find new table window
JFrameOperator jfo = new JFrameOperator(ttf);
// Open train edit window
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Build")));
Assert.assertFalse("build deselected", train0.isBuildEnabled());
JemmyUtil.enterClickAndLeave(ttf.showAllBox);
Assert.assertEquals("table size", 4, ttf.trainsTable.getRowCount());
// kill panels
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testTableBuildButton() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train0 = tmanager.getTrainByName("Test_Train 0");
Assert.assertNotNull(train0);
Assert.assertFalse("train build status", train0.isBuilt());
Train train1 = tmanager.getTrainByName("Test_Train 1");
Assert.assertNotNull(train1);
Assert.assertFalse("train build status", train1.isBuilt());
Train train2 = tmanager.getTrainByName("Test_Train 2");
Assert.assertNotNull(train2);
Assert.assertFalse("train build status", train2.isBuilt());
Route route = JUnitOperationsUtil.createFiveLocationRoute();
train0.setRoute(route);
// improve test coverage by showing built dates
train0.setBuiltStartYear("1956");
// improve test coverage by showing road names
train0.setCarRoadOption(Train.INCLUDE_ROADS);
String[] roads = { "SP", "UP" };
train0.setCarRoadNames(roads);
// improve test coverage by showing load names
train0.setLoadOption(Train.EXCLUDE_LOADS);
String[] loads = { "Coal", "Boxes" };
train0.setLoadNames(loads);
// improve test coverage by showing owner names
train0.setOwnerOption(Train.EXCLUDE_OWNERS);
String[] owners = { "DAB", "AAR" };
train0.setOwnerNames(owners);
TrainsTableAction a = new TrainsTableAction();
a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
TrainsTableFrame ttf = (TrainsTableFrame) JmriJFrame.getFrame(Bundle.getMessage("TitleTrainsTable"));
Assert.assertNotNull(ttf);
ttf.setSize(1400, Control.panelHeight600); // show entire table
// Find new table window by name
JFrameOperator jfo = new JFrameOperator(ttf);
// build train 0
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Function"))); // build button
jmri.util.JUnitUtil.waitFor(() -> {
return train0.isBuilt();
}, "wait train to build");
Assert.assertTrue("train build status", train0.isBuilt());
// build train 1, error no route!
JemmyUtil.clickOnCellThreadSafe(tbl, 1, Bundle.getMessage("Function"));
// a popup warning that the train doesn't have a route should appear
JemmyUtil.pressDialogButton(MessageFormat.format(Bundle.getMessage("buildErrorMsg"),
new Object[] { train1.getName(), train1.getDescription() }), Bundle.getMessage("ButtonOK"));
JemmyUtil.waitFor(ttf);
// try to move train 2, error not built
JemmyUtil.clickOnCellThreadSafe(tbl, 2, Bundle.getMessage("Action"));
// a popup warning that the train isn't built should appear
JemmyUtil.pressDialogButton(Bundle.getMessage("CanNotPerformAction"), Bundle.getMessage("ButtonOK"));
JemmyUtil.waitFor(ttf);
// test action button "Move"
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Action"))); // move button
Assert.assertEquals("move train", "Boston", train0.getCurrentLocationName());
// now test "Terminate"
JRadioButtonOperator jbo = new JRadioButtonOperator(jfo, Bundle.getMessage("Terminate"));
jbo.doClick();
// test action button "Terminate"
JemmyUtil.clickOnCellThreadSafe(tbl, 0, Bundle.getMessage("Action"));
// a popup warning that Manifest hasn't been printed should appear
JemmyUtil.pressDialogButton(MessageFormat.format(Bundle.getMessage("DoYouWantToTermiate"), new Object[] { train0.getName() }), Bundle.getMessage("ButtonYes"));
JemmyUtil.waitFor(ttf);
Assert.assertEquals("terminate train", "", train0.getCurrentLocationName());
Assert.assertFalse("train build status", train0.isBuilt());
// kill panels
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testTableConductorButton() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train0 = tmanager.getTrainByName("Test_Train 0");
Assert.assertNotNull(train0);
Assert.assertFalse("train build status", train0.isBuilt());
Route route = JUnitOperationsUtil.createFiveLocationRoute();
train0.setRoute(route);
TrainsTableAction a = new TrainsTableAction();
a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
TrainsTableFrame ttf = (TrainsTableFrame) JmriJFrame.getFrame(Bundle.getMessage("TitleTrainsTable"));
Assert.assertNotNull(ttf);
ttf.setSize(1200, Control.panelHeight600); // show entire table
// Find new table window
JFrameOperator jfo = new JFrameOperator(ttf);
// build train 0
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Function"))); // build button
jmri.util.JUnitUtil.waitFor(() -> {
return train0.isBuilt();
}, "wait train to build");
Assert.assertTrue("train build status", train0.isBuilt());
// test action button "Conductor"
JRadioButtonOperator jrbo = new JRadioButtonOperator(jfo, Bundle.getMessage("Conductor"));
jrbo.doClick();
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Action"))); // Conductor button
// Find conductor window by name
JFrameOperator jfoc = new JFrameOperator(
Bundle.getMessage("TitleTrainConductor") + " (" + train0.getName() + ")");
// Move train using conductor window
JButtonOperator jbo = new JButtonOperator(jfoc, Bundle.getMessage("Move"));
jbo.doClick();
Assert.assertEquals("Train moved", "Boston", train0.getCurrentLocationName());
// kill panels
jfoc.dispose();
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
/**
* Test table reset button. Train departs and terminates into staging.
*/
@Test
public void testTableResetActionButton() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.initOperationsData();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Setup.setStagingTrackImmediatelyAvail(true);
Train train = tmanager.getTrainByName("STF");
Assert.assertNotNull(train);
Assert.assertFalse("train build status", train.isBuilt());
// improve test coverage by showing built dates
train.setBuiltStartYear("1956");
train.setBuiltEndYear("2021");
// improve test coverage by using table colors
tmanager.setRowColorsManual(false);
tmanager.setRowColorNameForBuilt("Blue");
train.setTableRowColorNameReset("Yellow");
TrainsTableAction a = new TrainsTableAction();
a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
TrainsTableFrame ttf = (TrainsTableFrame) JmriJFrame.getFrame(Bundle.getMessage("TitleTrainsTable"));
Assert.assertNotNull(ttf);
ttf.setSize(1200, Control.panelHeight600); // show entire table
JFrameOperator jfo = new JFrameOperator(ttf);
// build train
JTableOperator tbl = new JTableOperator(jfo);
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Function"))); // build button
jmri.util.JUnitUtil.waitFor(() -> {
return train.isBuilt();
}, "wait train to build");
Assert.assertTrue("train build status", train.isBuilt());
// test action button "Reset"
JRadioButtonOperator jbo = new JRadioButtonOperator(jfo, Bundle.getMessage("Reset"));
jbo.doClick();
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Action"))); // Reset button
Assert.assertFalse("train build status", train.isBuilt());
// for test coverage reset train 1
tbl.clickOnCell(1, tbl.findColumn(Bundle.getMessage("Action"))); // Reset button
// build again
tbl.clickOnCell(0, tbl.findColumn(Bundle.getMessage("Function"))); // build button
jmri.util.JUnitUtil.waitFor(() -> {
return train.isBuilt();
}, "wait train to build");
train.move(); // can't reset a train once it departs
JemmyUtil.clickOnCellThreadSafe(tbl, 0 , Bundle.getMessage("Action"));
// a popup warning can't reset train should appear
JemmyUtil.pressDialogButton(Bundle.getMessage("CanNotResetTrain"), Bundle.getMessage("ButtonOK"));
JemmyUtil.waitFor(ttf);
Assert.assertTrue("train build status", train.isBuilt());
// kill panels
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testOptionalColumns() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train0 = tmanager.getTrainByName("Test_Train 0");
Assert.assertNotNull(train0);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
JFrameOperator jfo = new JFrameOperator(ttf);
JTableOperator tbl = new JTableOperator(jfo);
Assert.assertEquals("column not found", -1, tbl.findColumn(Bundle.getMessage("Built")));
Assert.assertEquals("column not found", -1, tbl.findColumn(Bundle.getMessage("Load")));
Assert.assertEquals("column not found", -1, tbl.findColumn(Bundle.getMessage("Road")));
Assert.assertEquals("column not found", -1, tbl.findColumn(Bundle.getMessage("Owner")));
// show built dates
train0.setBuiltStartYear("1956");
train0.setBuiltEndYear("2021");
Assert.assertEquals("column found", 5, tbl.findColumn(Bundle.getMessage("Built")));
// show roads
train0.setCarRoadOption(Train.INCLUDE_ROADS);
String[] roads = { "SP", "UP" };
train0.setCarRoadNames(roads);
Assert.assertEquals("column found", 6, tbl.findColumn(Bundle.getMessage("Road")));
train0.setCarRoadOption(Train.ALL_ROADS);
Assert.assertEquals("column not found", -1, tbl.findColumn(Bundle.getMessage("Road")));
train0.setLocoRoadOption(Train.EXCLUDE_ROADS);
train0.setLocoRoadNames(roads);
Assert.assertEquals("column found", 6, tbl.findColumn(Bundle.getMessage("Road")));
// show load names
train0.setLoadOption(Train.EXCLUDE_LOADS);
String[] loads = { "Coal", "Boxes" };
train0.setLoadNames(loads);
Assert.assertEquals("column found", 7, tbl.findColumn(Bundle.getMessage("Load")));
// show owner names
train0.setOwnerOption(Train.EXCLUDE_OWNERS);
String[] owners = { "DAB", "AAR" };
train0.setOwnerNames(owners);
Assert.assertEquals("column found", 8, tbl.findColumn(Bundle.getMessage("Owner")));
// kill panels
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testRadioButtons() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// confirm default
Assert.assertTrue(ttf.moveRB.isSelected());
JemmyUtil.enterClickAndLeave(ttf.resetRB);
Assert.assertEquals(TrainsTableFrame.RESET, tmanager.getTrainsFrameTrainAction());
JemmyUtil.enterClickAndLeave(ttf.terminateRB);
Assert.assertEquals(TrainsTableFrame.TERMINATE, tmanager.getTrainsFrameTrainAction());
JemmyUtil.enterClickAndLeave(ttf.conductorRB);
Assert.assertEquals(TrainsTableFrame.CONDUCTOR, tmanager.getTrainsFrameTrainAction());
JemmyUtil.enterClickAndLeave(ttf.moveRB);
Assert.assertEquals(TrainsTableFrame.MOVE, tmanager.getTrainsFrameTrainAction());
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testBuildButtonFailure() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
// increase test coverage
tmanager.setRowColorsManual(false);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// confirm defaults
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertFalse(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
}
// must disable build failure messages or thread lock
tmanager.setBuildMessagesEnabled(false);
JemmyUtil.enterClickAndLeave(ttf.buildButton);
// need to wait for builds to complete
Thread build = JUnitUtil.getThreadByName("Build Trains");
if (build != null) {
try {
build.join();
} catch (InterruptedException e) {
// do nothing
}
}
// confirm build failed for all trains
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertFalse(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertTrue(train.isBuildFailed());
}
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testBuildButtonSuccess() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
// increase test coverage
tmanager.setRowColorsManual(false);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// All trains use route D, fix so they all build
Route route = InstanceManager.getDefault(RouteManager.class).getRouteByName("Test Route D");
Assert.assertNotNull(route);
Location location = InstanceManager.getDefault(LocationManager.class).getLocationByName("Test_Location 1");
route.addLocation(location);
// confirm defaults and load train route
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertFalse(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
train.setRoute(route);
}
// Shouldn't have a build failure, but just in case
tmanager.setBuildMessagesEnabled(false);
JemmyUtil.enterClickAndLeave(ttf.buildButton);
// need to wait for builds to complete
Thread build = JUnitUtil.getThreadByName("Build Trains");
if (build != null) {
try {
build.join();
} catch (InterruptedException e) {
// do nothing
}
}
// confirm build succeeded for all trains
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertTrue(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
}
// dialog window asks if user wants to terminate train, answer no
JemmyUtil.enterClickAndLeaveThreadSafe(ttf.terminateButton);
for (Train train : tmanager.getTrainsByNameList()) {
JemmyUtil.pressDialogButton(MessageFormat.format(Bundle.getMessage("TerminateTrain"),
new Object[] { train.getName(), train.getDescription() }), Bundle.getMessage("ButtonNo"));
}
JemmyUtil.waitFor(ttf);
// confirm no change in status
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertTrue(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
}
// dialog window asks if user wants to terminate train, answer yes
JemmyUtil.enterClickAndLeaveThreadSafe(ttf.terminateButton);
for (Train train : tmanager.getTrainsByNameList()) {
JemmyUtil.pressDialogButton(MessageFormat.format(Bundle.getMessage("TerminateTrain"),
new Object[] { train.getName(), train.getDescription() }), Bundle.getMessage("ButtonYes"));
}
JemmyUtil.waitFor(ttf);
// confirm all trains terminated
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertFalse(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
}
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testTerminateButton() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
JUnitOperationsUtil.loadTrains();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
TrainsTableFrame ttf = new TrainsTableFrame();
ttf.setSize(1200, Control.panelHeight600); // show entire table
// confirm defaults
for (Train train : tmanager.getTrainsByNameList()) {
Assert.assertFalse(train.isBuilt());
Assert.assertTrue(train.isBuildEnabled());
Assert.assertFalse(train.isBuildFailed());
}
JemmyUtil.enterClickAndLeave(ttf.terminateButton);
JUnitUtil.dispose(ttf);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
}