Files
JIMRI/java/test/jmri/jmrit/operations/trains/XmlTest.java
T
2026-06-17 14:00:51 +02:00

692 lines
40 KiB
Java

package jmri.jmrit.operations.trains;
import java.io.File;
import java.io.IOException;
import org.jdom2.JDOMException;
import org.junit.Assert;
import org.junit.jupiter.api.*;
import jmri.InstanceManager;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.OperationsXml;
import jmri.jmrit.operations.locations.*;
import jmri.jmrit.operations.rollingstock.engines.Engine;
import jmri.jmrit.operations.rollingstock.engines.EngineManager;
import jmri.jmrit.operations.routes.*;
import jmri.jmrit.operations.setup.Setup;
/**
* Tests for the Xml class Last manually cross-checked on 20090131
* <p>
* TrainBuilder: Everything. TrainSwitchLists: Everything.
*
* @author Bob Coleman Copyright (C) 2008, 2009
*/
public class XmlTest extends OperationsTestCase {
@Test
public void testFilePathNames() {
// test the build report path name
Assert.assertEquals("buildstatus", TrainManagerXml.BUILD_STATUS);
Assert.assertEquals(OperationsXml.getFileLocation()
+ "operations"
+ File.separator
+ "JUnitTest"
+ File.separator
+ "buildstatus"
+ File.separator
+ "train (TestReportName).txt",
InstanceManager.getDefault(TrainManagerXml.class).defaultBuildReportFileName("TestReportName"));
// test the manifest path name
Assert.assertEquals("manifests", TrainManagerXml.MANIFESTS);
Assert.assertEquals(OperationsXml.getFileLocation()
+ "operations"
+ File.separator
+ "JUnitTest"
+ File.separator
+ "manifests"
+ File.separator
+ "train (TestManifestName).txt",
InstanceManager.getDefault(TrainManagerXml.class).getDefaultManifestFileName("TestManifestName"));
// test the manifest CSV path name
Assert.assertEquals("csvManifests", TrainManagerXml.CSV_MANIFESTS);
Assert.assertEquals(OperationsXml.getFileLocation()
+ "operations"
+ File.separator
+ "JUnitTest"
+ File.separator
+ "csvManifests"
+ File.separator
+ "train (TestManifestName).csv",
InstanceManager.getDefault(TrainManagerXml.class).getDefaultCsvManifestFileName("TestManifestName"));
// test the switch list path name
Assert.assertEquals("switchLists", TrainManagerXml.SWITCH_LISTS);
Assert.assertEquals(OperationsXml.getFileLocation()
+ "operations"
+ File.separator
+ "JUnitTest"
+ File.separator
+ "switchLists"
+ File.separator
+ "location (TestSwitchListName).txt",
InstanceManager.getDefault(TrainManagerXml.class).getDefaultSwitchListName("TestSwitchListName"));
// test the CSV switch list path name
Assert.assertEquals("csvSwitchLists", TrainManagerXml.CSV_SWITCH_LISTS);
Assert.assertEquals(OperationsXml.getFileLocation()
+ "operations"
+ File.separator
+ "JUnitTest"
+ File.separator
+ "csvSwitchLists"
+ File.separator
+ "location (TestSwitchListName).csv",
InstanceManager.getDefault(TrainManagerXml.class).getDefaultCsvSwitchListFileName("TestSwitchListName"));
}
/**
* Test train XML create, read, and backup support. Originally written as
* three separate tests, now one large test as of 8/29/2013
*
* @throws JDOMException exception
* @throws IOException exception
*/
@Test
public void testXMLCreate() throws JDOMException, IOException {
// confirm that file name has been modified
Assert.assertEquals("test file name", "OperationsJUnitTestTrainRoster.xml", InstanceManager.getDefault(TrainManagerXml.class)
.getOperationsFileName());
RouteManager rmanager = InstanceManager.getDefault(RouteManager.class);
Route A = rmanager.newRoute("A");
Route B = rmanager.newRoute("B");
Route C = rmanager.newRoute("C");
Assert.assertEquals("no locations in route A", 0, A.getLocationsBySequenceList().size());
Assert.assertEquals("no locations in route B", 0, B.getLocationsBySequenceList().size());
Assert.assertEquals("no locations in route C", 0, C.getLocationsBySequenceList().size());
LocationManager lmanager = InstanceManager.getDefault(LocationManager.class);
Location Arlington = lmanager.newLocation("Arlington");
Location Westford = lmanager.newLocation("Westford");
Track trackWestford = Westford.addTrack("Track at Westford", Track.SPUR);
Location Bedford = lmanager.newLocation("Bedford");
RouteLocation startA = A.addLocation(Westford);
startA.setTrainIconX(125); // set the train icon coordinates
startA.setTrainIconY(175);
RouteLocation startB = B.addLocation(Arlington);
startB.setTrainIconX(175); // set the train icon coordinates
startB.setTrainIconY(175);
RouteLocation startC = C.addLocation(Bedford);
startC.setTrainIconX(25); // set the train icon coordinates
startC.setTrainIconY(200);
RouteLocation midC = C.addLocation(Arlington);
RouteLocation endC = C.addLocation(Westford);
TrainManager manager = InstanceManager.getDefault(TrainManager.class);
Assert.assertEquals("Starting Number of Trains", 0, manager.getList().size());
Train t1 = manager.newTrain("Test Number 1");
Train t2 = manager.newTrain("Test Number 2");
Train t3 = manager.newTrain("Test Number 3");
Assert.assertEquals("New Number of Trains", 3, manager.getList().size());
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
Engine e1 = eManager.newRS("UP", "1");
Engine e2 = eManager.newRS("UP", "2");
Engine e3 = eManager.newRS("UP", "3");
// save train manager
manager.setRowColorNameForBuildFailed("Orange"); // should become "orange"
manager.setRowColorNameForBuilt("Yellow"); // should become "yellow"
manager.setRowColorNameForTerminated("Gray"); // should become "gray"
manager.setRowColorNameForTrainEnRoute("White"); // should become white
manager.setRowColorNameForReset("Green"); // should become green
// save in backup file
t3.setBuildEnabled(true);
t3.setBuildFailed(false);
t3.setBuildTrainNormalEnabled(false);
t3.setBuilt(true);
t3.setBuiltEndYear("1950");
t3.setBuiltStartYear("1925");
t3.setCabooseRoad("t3 X caboose road");
t3.setComment("t3 X comment");
t3.setDescription("t3 X description");
t3.setEngineModel("t3 X engine model");
t3.setEngineRoad("t3 X engine road");
t3.setLeadEngine(e1);
t3.setLoadOption("t3 X load option");
t3.setManifestLogoPathName("t3 X pathName");
t3.setNumberEngines("7");
t3.setOwnerOption("t3 X owner option");
t3.setRailroadName("t3 X railroad name");
t3.setRequirements(Train.CABOOSE);
t3.setCarRoadOption("t3 X road option");
t3.setRoute(B);
t3.setStatusCode(Train.CODE_UNKNOWN);
InstanceManager.getDefault(TrainManagerXml.class).writeOperationsFile();
// Add some more trains and write file again
// so we can test the backup facility
Train t4 = manager.newTrain("Test Number 4");
Train t5 = manager.newTrain("Test Number 5");
Train t6 = manager.newTrain("Test Number 6");
Assert.assertNotNull("train 1", t1);
Assert.assertNotNull("train 2", t2);
Assert.assertNotNull("train 3", t3);
Assert.assertNotNull("train 4", t4);
Assert.assertNotNull("train 5", t5);
Assert.assertNotNull("train 6", t6);
t1.setBuildEnabled(true);
t1.setBuildFailed(true);
t1.setBuildTrainNormalEnabled(true);
t1.setBuilt(false);
t1.setStatusCode(Train.CODE_BUILD_FAILED);
t1.setBuiltEndYear("1956");
t1.setBuiltStartYear("1932");
t1.setCabooseRoad("t1 caboose road");
t1.setComment("t1 comment");
t1.setCurrentLocation(startC);
t1.setDepartureTime("16", "1", "35");
t1.setDescription("t1 description");
t1.setEngineModel("t1 engine model");
t1.setEngineRoad("t1 engine road");
t1.setLeadEngine(e1);
t1.setLoadOption("t1 load option");
t1.addLoadName("t1 load name 1");
t1.setManifestLogoPathName("t1 pathName");
t1.setNumberEngines("1");
t1.setOwnerOption("t1 owner option");
t1.addOwnerName("t1 owner name 1");
t1.setRailroadName("t1 railroad name");
t1.setRequirements(Train.NO_CABOOSE_OR_FRED);
t1.setCarRoadOption("t1 road option");
t1.addCarRoadName("t1 road name 1");
t1.setLocoRoadOption("t1 loco road option");
t1.addLocoRoadName("t1 loco road name 1");
t1.setRoute(C);
t1.setTableRowColorName("Red"); // should change to "red" when reloading
t1.setTableRowColorNameReset("Blue"); // should change to "blue" when reloading
t1.setTerminationTrack(trackWestford);
t1.setSecondLegCabooseRoad("t1 second leg caboose road");
t1.setSecondLegEndRouteLocation(midC);
t1.setSecondLegEngineModel("t1 second leg engine model");
t1.setSecondLegEngineRoad("t1 second leg engine road");
t1.setSecondLegNumberEngines("5");
t1.setSecondLegOptions(Train.ADD_CABOOSE);
t1.setSecondLegStartRouteLocation(endC);
t1.setSendCarsToTerminalEnabled(true);
t1.setSwitchListStatus(Train.PRINTED);
t1.setThirdLegCabooseRoad("t1 third leg caboose road");
t1.setThirdLegEndRouteLocation(startC);
t1.setThirdLegEngineModel("t1 third leg engine model");
t1.setThirdLegEngineRoad("t1 third leg engine road");
t1.setThirdLegNumberEngines("3");
t1.setThirdLegOptions(Train.HELPER_ENGINES);
t1.setThirdLegStartRouteLocation(midC);
t1.addTrainSkipsLocation(midC);
t3.setBuildEnabled(false);
t3.setBuildFailed(true);
t3.setBuildTrainNormalEnabled(false);
t3.setBuilt(false);
t3.setBuiltEndYear("1955");
t3.setBuiltStartYear("1931");
t3.setCabooseRoad("t3 caboose road");
t3.setComment("t3 comment");
t3.setCurrentLocation(startA);
t3.setDepartureTime("0", "4", "55");
t3.setDescription("t3 description");
t3.setEngineModel("t3 engine model");
t3.setEngineRoad("t3 engine road");
t3.setLeadEngine(e2);
t3.setLoadOption("t3 load option");
t3.setManifestLogoPathName("t3 pathName");
t3.setNumberEngines("1");
t3.setOwnerOption("t3 owner option");
t3.setRailroadName("t3 railroad name");
t3.setRequirements(Train.NO_CABOOSE_OR_FRED);
t3.setCarRoadOption("t3 road option");
t3.setRoute(A);
t3.setDepartureTrack(trackWestford);
t3.setStatusCode(Train.CODE_UNKNOWN);
t3.addAfterBuildScript("After build script path");
t3.addBuildScript("Build script path");
t3.addMoveScript("Move script path");
t3.addTerminationScript("Termination script path");
t5.setBuildEnabled(true);
t5.setBuildFailed(false);
t5.setBuildTrainNormalEnabled(false);
t5.setBuilt(true);
t5.setBuiltEndYear("1954");
t5.setBuiltStartYear("1930");
t5.setCabooseRoad("t5 caboose road");
t5.setComment("t5 comment");
t5.setCurrentLocation(startB);
t5.setDepartureTime("0", "23", "15");
t5.setDescription("t5 description");
t5.setEngineModel("t5 engine model");
t5.setEngineRoad("t5 engine road");
t5.setLeadEngine(e3);
t5.setLoadOption("t5 load option");
t5.setManifestLogoPathName("t5 pathName");
t5.setNumberEngines("1");
t5.setOwnerOption("t5 owner option");
t5.setRailroadName("t5 railroad name");
t5.setRequirements(Train.NO_CABOOSE_OR_FRED);
t5.setCarRoadOption("t5 road option");
t5.setRoute(B);
t5.setStatusCode(Train.CODE_UNKNOWN);
InstanceManager.getDefault(TrainManagerXml.class).writeOperationsFile();
// perform data check before dispose
Assert.assertEquals("Row color", "Orange", manager.getRowColorNameForBuildFailed());
Assert.assertEquals("Row color", "Yellow", manager.getRowColorNameForBuilt());
Assert.assertEquals("Row color", "Green", manager.getRowColorNameForReset());
Assert.assertEquals("Row color", "Gray", manager.getRowColorNameForTerminated());
Assert.assertEquals("Row color", "White", manager.getRowColorNameForTrainEnRoute());
Assert.assertEquals("t1 build", true, t1.isBuildEnabled());
Assert.assertEquals("t1 build failed", true, t1.isBuildFailed());
Assert.assertEquals("t1 build normal", true, t1.isBuildTrainNormalEnabled());
Assert.assertEquals("t1 built", false, t1.isBuilt());
Assert.assertEquals("t1 status code", Train.CODE_BUILD_FAILED, t1.getStatusCode());
Assert.assertEquals("t1 status", Train.BUILD_FAILED, t1.getStatus());
Assert.assertEquals("t1 built end year", "1956", t1.getBuiltEndYear());
Assert.assertEquals("t1 built start year", "1932", t1.getBuiltStartYear());
Assert.assertEquals("t1 caboose roadr", "t1 caboose road", t1.getCabooseRoad());
Assert.assertEquals("t1 comment", "t1 comment", t1.getCommentWithColor());
Assert.assertEquals("t1 current location name", "Bedford", t1.getCurrentLocationName());
Assert.assertEquals("t1 departure day", "16", t1.getDepartureTimeDay());
Assert.assertEquals("t1 departure hour", "01", t1.getDepartureTimeHour());
Assert.assertEquals("t1 departure minute", "35", t1.getDepartureTimeMinute());
Assert.assertEquals("t1 engine model", "t1 engine model", t1.getEngineModel());
Assert.assertEquals("t1 engine road", "t1 engine road", t1.getEngineRoad());
Assert.assertNotNull("t1 has a lead engine", t1.getLeadEngine());
Assert.assertEquals("t1 lead engine number", "1", t1.getLeadEngine().getNumber());
Assert.assertEquals("t1 load option", "t1 load option", t1.getLoadOption());
Assert.assertEquals("t1 load name", "t1 load name 1", t1.getLoadNames()[0]);
Assert.assertEquals("t1 path name", "t1 pathName", t1.getManifestLogoPathName());
Assert.assertEquals("t1 number of engines", "1", t1.getNumberEngines());
Assert.assertEquals("t1 Owner option", "t1 owner option", t1.getOwnerOption());
Assert.assertEquals("t1 Owner name", "t1 owner name 1", t1.getOwnerNames()[0]);
Assert.assertEquals("t1 railroad name", "t1 railroad name", t1.getRailroadName());
Assert.assertEquals("t1 requirements", Train.NO_CABOOSE_OR_FRED, t1.getRequirements());
Assert.assertEquals("t1 road option", "t1 road option", t1.getCarRoadOption());
Assert.assertEquals("t1 road name", "t1 road name 1", t1.getCarRoadNames()[0]);
Assert.assertEquals("t1 loco road option", "t1 loco road option", t1.getLocoRoadOption());
Assert.assertEquals("t1 loco road name", "t1 loco road name 1", t1.getLocoRoadNames()[0]);
Assert.assertEquals("t1 route", C, t1.getRoute());
Assert.assertEquals("t1 color", "Red", t1.getTableRowColorName());
Assert.assertEquals("t1 color reset", "Blue", t1.getTableRowColorNameReset());
Assert.assertEquals("t1 termination track", trackWestford, t1.getTerminationTrack());
Assert.assertEquals("t1 second leg caboose road", "t1 second leg caboose road", t1
.getSecondLegCabooseRoad());
Assert.assertEquals("t1 second leg end location", midC, t1.getSecondLegEndRouteLocation());
Assert.assertEquals("t1 second leg engine model", "t1 second leg engine model", t1
.getSecondLegEngineModel());
Assert.assertEquals("t1 second leg engine road", "t1 second leg engine road", t1
.getSecondLegEngineRoad());
Assert.assertEquals("t1 second leg number of engines", "5", t1.getSecondLegNumberEngines());
Assert.assertEquals("t1 second leg options", Train.ADD_CABOOSE, t1.getSecondLegOptions());
Assert.assertEquals("t1 second leg start location", endC, t1.getSecondLegStartRouteLocation());
Assert.assertEquals("t1 send cars to terminal", true, t1.isSendCarsToTerminalEnabled());
Assert.assertEquals("t1 switch list status", Train.PRINTED, t1.getSwitchListStatus());
Assert.assertEquals("t1 third leg caboose road", "t1 third leg caboose road", t1
.getThirdLegCabooseRoad());
Assert.assertEquals("t1 third leg end location", startC, t1.getThirdLegEndRouteLocation());
Assert.assertEquals("t1 third leg engine model", "t1 third leg engine model", t1
.getThirdLegEngineModel());
Assert.assertEquals("t1 third leg engine road", "t1 third leg engine road", t1
.getThirdLegEngineRoad());
Assert.assertEquals("t1 third leg number of engines", "3", t1.getThirdLegNumberEngines());
Assert.assertEquals("t1 third leg options", Train.HELPER_ENGINES, t1.getThirdLegOptions());
Assert.assertEquals("t1 third leg start location", midC, t1.getThirdLegStartRouteLocation());
Assert.assertEquals("t1 skips location", false, t1.isLocationSkipped(startC));
Assert.assertEquals("t1 skips location", true, t1.isLocationSkipped(midC));
Assert.assertEquals("t1 skips location", false, t1.isLocationSkipped(endC));
Assert.assertEquals("t3 build", false, t3.isBuildEnabled());
Assert.assertEquals("t3 build failed", true, t3.isBuildFailed());
Assert.assertEquals("t3 build normal", false, t3.isBuildTrainNormalEnabled());
Assert.assertEquals("t3 built", false, t3.isBuilt());
Assert.assertEquals("t3 built end year", "1955", t3.getBuiltEndYear());
Assert.assertEquals("t3 built start year", "1931", t3.getBuiltStartYear());
Assert.assertEquals("t3 caboose roadr", "t3 caboose road", t3.getCabooseRoad());
Assert.assertEquals("t3 comment", "t3 comment", t3.getCommentWithColor());
Assert.assertEquals("t3 current location name", "Westford", t3.getCurrentLocationName());
Assert.assertEquals("t3 departure day", "0", t3.getDepartureTimeDay());
Assert.assertEquals("t3 departure hour", "04", t3.getDepartureTimeHour());
Assert.assertEquals("t3 departure minute", "55", t3.getDepartureTimeMinute());
Assert.assertEquals("t3 engine model", "t3 engine model", t3.getEngineModel());
Assert.assertEquals("t3 engine road", "t3 engine road", t3.getEngineRoad());
Assert.assertEquals("t3 lead engine number", "2", t3.getLeadEngine().getNumber());
Assert.assertEquals("t3 load option", "t3 load option", t3.getLoadOption());
Assert.assertEquals("t3 path name", "t3 pathName", t3.getManifestLogoPathName());
Assert.assertEquals("t3 number of engines", "1", t3.getNumberEngines());
Assert.assertEquals("t3 Owner option", "t3 owner option", t3.getOwnerOption());
Assert.assertEquals("t3 railroad name", "t3 railroad name", t3.getRailroadName());
Assert.assertEquals("t3 requirements", Train.NO_CABOOSE_OR_FRED, t3.getRequirements());
Assert.assertEquals("t3 road option", "t3 road option", t3.getCarRoadOption());
Assert.assertEquals("t3 route", A, t3.getRoute());
Assert.assertEquals("t3 departure track", trackWestford, t3.getDepartureTrack());
// test second leg defaults
Assert.assertEquals("t3 second leg caboose road", "", t3.getSecondLegCabooseRoad());
Assert.assertEquals("t3 second leg end location", null, t3.getSecondLegEndRouteLocation());
Assert.assertEquals("t3 second leg engine model", "", t3.getSecondLegEngineModel());
Assert.assertEquals("t3 second leg engine road", "", t3.getSecondLegEngineRoad());
Assert.assertEquals("t3 second leg number of engines", "0", t3.getSecondLegNumberEngines());
Assert.assertEquals("t3 second leg options", Train.NO_CABOOSE_OR_FRED, t3.getSecondLegOptions());
Assert.assertEquals("t3 second leg start location", null, t3.getSecondLegStartRouteLocation());
Assert.assertEquals("t3 send cars to terminal", false, t3.isSendCarsToTerminalEnabled());
Assert.assertEquals("t3 status", Train.UNKNOWN, t3.getStatus());
Assert.assertEquals("t3 switch list status", Train.UNKNOWN, t3.getSwitchListStatus());
// test third leg defaults
Assert.assertEquals("t3 third leg caboose road", "", t3.getThirdLegCabooseRoad());
Assert.assertEquals("t3 third leg end location", null, t3.getThirdLegEndRouteLocation());
Assert.assertEquals("t3 third leg engine model", "", t3.getThirdLegEngineModel());
Assert.assertEquals("t3 third leg engine road", "", t3.getThirdLegEngineRoad());
Assert.assertEquals("t3 third leg number of engines", "0", t3.getThirdLegNumberEngines());
Assert.assertEquals("t3 third leg options", Train.NO_CABOOSE_OR_FRED, t3.getThirdLegOptions());
Assert.assertEquals("t3 third leg start location", null, t3.getThirdLegStartRouteLocation());
// test scripts
Assert.assertEquals("After script", "After build script path", t3.getAfterBuildScripts().get(0));
Assert.assertEquals("Build script", "Build script path", t3.getBuildScripts().get(0));
Assert.assertEquals("Move script", "Move script path", t3.getMoveScripts().get(0));
Assert.assertEquals("Termination script", "Termination script path", t3.getTerminationScripts().get(0));
Assert.assertEquals("t5 build", true, t5.isBuildEnabled());
Assert.assertEquals("t5 build failed", false, t5.isBuildFailed());
Assert.assertEquals("t5 built", true, t5.isBuilt());
Assert.assertEquals("t5 built end year", "1954", t5.getBuiltEndYear());
Assert.assertEquals("t5 built start year", "1930", t5.getBuiltStartYear());
Assert.assertEquals("t5 caboose roadr", "t5 caboose road", t5.getCabooseRoad());
Assert.assertEquals("t5 comment", "t5 comment", t5.getCommentWithColor());
Assert.assertEquals("t5 current location name", "Arlington", t5.getCurrentLocationName());
Assert.assertEquals("t5 departure hour", "23", t5.getDepartureTimeHour());
Assert.assertEquals("t5 departure minute", "15", t5.getDepartureTimeMinute());
Assert.assertEquals("t5 engine model", "t5 engine model", t5.getEngineModel());
Assert.assertEquals("t5 engine road", "t5 engine road", t5.getEngineRoad());
Assert.assertEquals("t5 lead engine number", "3", t5.getLeadEngine().getNumber());
Assert.assertEquals("t5 load option", "t5 load option", t5.getLoadOption());
Assert.assertEquals("t5 path name", "t5 pathName", t5.getManifestLogoPathName());
Assert.assertEquals("t5 number of engines", "1", t5.getNumberEngines());
Assert.assertEquals("t5 Owner option", "t5 owner option", t5.getOwnerOption());
Assert.assertEquals("t5 railroad name", "t5 railroad name", t5.getRailroadName());
Assert.assertEquals("t5 requirements", Train.NO_CABOOSE_OR_FRED, t5.getRequirements());
Assert.assertEquals("t5 road option", "t5 road option", t5.getCarRoadOption());
Assert.assertEquals("t5 route", B, t5.getRoute());
Assert.assertEquals("t5 status", Train.UNKNOWN, t5.getStatus());
// clear all trains
manager.dispose();
// prevent swing access when loading train icon
Setup.setPanelName("");
manager = InstanceManager.getDefault(TrainManager.class);
Assert.assertEquals("Starting Number of Trains", 0, manager.getTrainsByIdList().size());
// confirm that none of the trains exist
t1 = manager.getTrainByName("Test Number 1");
t2 = manager.getTrainByName("Test Number 2");
t3 = manager.getTrainByName("Test Number 3");
t4 = manager.getTrainByName("Test Number 4");
t5 = manager.getTrainByName("Test Number 5");
t6 = manager.getTrainByName("Test Number 6");
Assert.assertNull("train 1", t1);
Assert.assertNull("train 2", t2);
Assert.assertNull("train 3", t3);
Assert.assertNull("train 4", t4);
Assert.assertNull("train 5", t5);
Assert.assertNull("train 6", t6);
// now reload train data from file
InstanceManager.getDefault(TrainManagerXml.class).readFile(InstanceManager.getDefault(TrainManagerXml.class).getDefaultOperationsFilename());
// after read colors are changed to lower case
Assert.assertEquals("Row color", "orange", manager.getRowColorNameForBuildFailed());
Assert.assertEquals("Row color", "yellow", manager.getRowColorNameForBuilt());
Assert.assertEquals("Row color", "green", manager.getRowColorNameForReset());
Assert.assertEquals("Row color", "gray", manager.getRowColorNameForTerminated());
Assert.assertEquals("Row color", "white", manager.getRowColorNameForTrainEnRoute());
Assert.assertEquals("Number of Trains", 6, manager.getTrainsByIdList().size());
t1 = manager.getTrainByName("Test Number 1");
t2 = manager.getTrainByName("Test Number 2");
t3 = manager.getTrainByName("Test Number 3");
t4 = manager.getTrainByName("Test Number 4");
t5 = manager.getTrainByName("Test Number 5");
t6 = manager.getTrainByName("Test Number 6");
Assert.assertNotNull("train 1", t1);
Assert.assertNotNull("train 2", t2);
Assert.assertNotNull("train 3", t3);
Assert.assertNotNull("train 4", t4);
Assert.assertNotNull("train 5", t5);
Assert.assertNotNull("train 6", t6);
Assert.assertEquals("t1 build", true, t1.isBuildEnabled());
Assert.assertEquals("t1 build failed", true, t1.isBuildFailed());
Assert.assertEquals("t1 build normal", true, t1.isBuildTrainNormalEnabled());
Assert.assertEquals("t1 built", false, t1.isBuilt());
Assert.assertEquals("t1 status code", Train.CODE_BUILD_FAILED, t1.getStatusCode());
Assert.assertEquals("t1 status", Train.BUILD_FAILED, t1.getStatus());
Assert.assertEquals("t1 built end year", "1956", t1.getBuiltEndYear());
Assert.assertEquals("t1 built start year", "1932", t1.getBuiltStartYear());
Assert.assertEquals("t1 caboose roadr", "t1 caboose road", t1.getCabooseRoad());
Assert.assertEquals("t1 comment", "t1 comment", t1.getCommentWithColor());
Assert.assertEquals("t1 current location name", "Bedford", t1.getCurrentLocationName());
Assert.assertEquals("t1 departure hour", "01", t1.getDepartureTimeHour());
Assert.assertEquals("t1 departure minute", "35", t1.getDepartureTimeMinute());
Assert.assertEquals("t1 engine model", "t1 engine model", t1.getEngineModel());
Assert.assertEquals("t1 engine road", "t1 engine road", t1.getEngineRoad());
Assert.assertNotNull("t1 has a lead engine", t1.getLeadEngine());
Assert.assertEquals("t1 lead engine number", "1", t1.getLeadEngine().getNumber());
Assert.assertEquals("t1 load option", "t1 load option", t1.getLoadOption());
Assert.assertEquals("t1 load name", "t1 load name 1", t1.getLoadNames()[0]);
Assert.assertEquals("t1 path name", "t1 pathName", t1.getManifestLogoPathName());
Assert.assertEquals("t1 number of engines", "1", t1.getNumberEngines());
Assert.assertEquals("t1 Owner option", "t1 owner option", t1.getOwnerOption());
Assert.assertEquals("t1 Owner name", "t1 owner name 1", t1.getOwnerNames()[0]);
Assert.assertEquals("t1 railroad name", "t1 railroad name", t1.getRailroadName());
Assert.assertEquals("t1 requirements", Train.NO_CABOOSE_OR_FRED, t1.getRequirements());
Assert.assertEquals("t1 road option", "t1 road option", t1.getCarRoadOption());
Assert.assertEquals("t1 road name", "t1 road name 1", t1.getCarRoadNames()[0]);
Assert.assertEquals("t1 loco road option", "t1 loco road option", t1.getLocoRoadOption());
Assert.assertEquals("t1 loco road name", "t1 loco road name 1", t1.getLocoRoadNames()[0]);
Assert.assertEquals("t1 route", C, t1.getRoute());
Assert.assertEquals("t1 color", "red", t1.getTableRowColorName());
Assert.assertEquals("t1 color", "blue", t1.getTableRowColorNameReset());
Assert.assertEquals("t1 termination track", trackWestford, t1.getTerminationTrack());
Assert.assertEquals("t1 second leg caboose road", "t1 second leg caboose road", t1
.getSecondLegCabooseRoad());
Assert.assertEquals("t1 second leg end location", midC, t1.getSecondLegEndRouteLocation());
Assert.assertEquals("t1 second leg engine model", "t1 second leg engine model", t1
.getSecondLegEngineModel());
Assert.assertEquals("t1 second leg engine road", "t1 second leg engine road", t1
.getSecondLegEngineRoad());
Assert.assertEquals("t1 second leg number of engines", "5", t1.getSecondLegNumberEngines());
Assert.assertEquals("t1 second leg options", Train.ADD_CABOOSE, t1.getSecondLegOptions());
Assert.assertEquals("t1 second leg start location", endC, t1.getSecondLegStartRouteLocation());
Assert.assertEquals("t1 send cars to terminal", true, t1.isSendCarsToTerminalEnabled());
Assert.assertEquals("t1 switch list status", Train.PRINTED, t1.getSwitchListStatus());
Assert.assertEquals("t1 third leg caboose road", "t1 third leg caboose road", t1
.getThirdLegCabooseRoad());
Assert.assertEquals("t1 third leg end location", startC, t1.getThirdLegEndRouteLocation());
Assert.assertEquals("t1 third leg engine model", "t1 third leg engine model", t1
.getThirdLegEngineModel());
Assert.assertEquals("t1 third leg engine road", "t1 third leg engine road", t1
.getThirdLegEngineRoad());
Assert.assertEquals("t1 third leg number of engines", "3", t1.getThirdLegNumberEngines());
Assert.assertEquals("t1 third leg options", Train.HELPER_ENGINES, t1.getThirdLegOptions());
Assert.assertEquals("t1 third leg start location", midC, t1.getThirdLegStartRouteLocation());
Assert.assertEquals("t1 skips location", false, t1.isLocationSkipped(startC));
Assert.assertEquals("t1 skips location", true, t1.isLocationSkipped(midC));
Assert.assertEquals("t1 skips location", false, t1.isLocationSkipped(endC));
Assert.assertEquals("t3 build", false, t3.isBuildEnabled());
Assert.assertEquals("t3 build failed", true, t3.isBuildFailed());
Assert.assertEquals("t3 build normal", false, t3.isBuildTrainNormalEnabled());
Assert.assertEquals("t3 built", false, t3.isBuilt());
Assert.assertEquals("t3 built end year", "1955", t3.getBuiltEndYear());
Assert.assertEquals("t3 built start year", "1931", t3.getBuiltStartYear());
Assert.assertEquals("t3 caboose roadr", "t3 caboose road", t3.getCabooseRoad());
Assert.assertEquals("t3 comment", "t3 comment", t3.getCommentWithColor());
Assert.assertEquals("t3 current location name", "Westford", t3.getCurrentLocationName());
Assert.assertEquals("t3 departure hour", "04", t3.getDepartureTimeHour());
Assert.assertEquals("t3 departure minute", "55", t3.getDepartureTimeMinute());
Assert.assertEquals("t3 engine model", "t3 engine model", t3.getEngineModel());
Assert.assertEquals("t3 engine road", "t3 engine road", t3.getEngineRoad());
Assert.assertEquals("t3 lead engine number", "2", t3.getLeadEngine().getNumber());
Assert.assertEquals("t3 load option", "t3 load option", t3.getLoadOption());
Assert.assertEquals("t3 path name", "t3 pathName", t3.getManifestLogoPathName());
Assert.assertEquals("t3 number of engines", "1", t3.getNumberEngines());
Assert.assertEquals("t3 Owner option", "t3 owner option", t3.getOwnerOption());
Assert.assertEquals("t3 railroad name", "t3 railroad name", t3.getRailroadName());
Assert.assertEquals("t3 requirements", Train.NO_CABOOSE_OR_FRED, t3.getRequirements());
Assert.assertEquals("t3 road option", "t3 road option", t3.getCarRoadOption());
Assert.assertEquals("t3 route", A, t3.getRoute());
Assert.assertEquals("t3 departure track", trackWestford, t3.getDepartureTrack());
// test second leg defaults
Assert.assertEquals("t3 second leg caboose road", "", t3.getSecondLegCabooseRoad());
Assert.assertEquals("t3 second leg end location", null, t3.getSecondLegEndRouteLocation());
Assert.assertEquals("t3 second leg engine model", "", t3.getSecondLegEngineModel());
Assert.assertEquals("t3 second leg engine road", "", t3.getSecondLegEngineRoad());
Assert.assertEquals("t3 second leg number of engines", "0", t3.getSecondLegNumberEngines());
Assert.assertEquals("t3 second leg options", Train.NO_CABOOSE_OR_FRED, t3.getSecondLegOptions());
Assert.assertEquals("t3 second leg start location", null, t3.getSecondLegStartRouteLocation());
Assert.assertEquals("t3 send cars to terminal", false, t3.isSendCarsToTerminalEnabled());
Assert.assertEquals("t3 status", Train.UNKNOWN, t3.getStatus());
Assert.assertEquals("t3 switch list status", Train.UNKNOWN, t3.getSwitchListStatus());
// test third leg defaults
Assert.assertEquals("t3 third leg caboose road", "", t3.getThirdLegCabooseRoad());
Assert.assertEquals("t3 third leg end location", null, t3.getThirdLegEndRouteLocation());
Assert.assertEquals("t3 third leg engine model", "", t3.getThirdLegEngineModel());
Assert.assertEquals("t3 third leg engine road", "", t3.getThirdLegEngineRoad());
Assert.assertEquals("t3 third leg number of engines", "0", t3.getThirdLegNumberEngines());
Assert.assertEquals("t3 third leg options", Train.NO_CABOOSE_OR_FRED, t3.getThirdLegOptions());
Assert.assertEquals("t3 third leg start location", null, t3.getThirdLegStartRouteLocation());
// test scripts
Assert.assertEquals("After script", "After build script path", t3.getAfterBuildScripts().get(0));
Assert.assertEquals("Build script", "Build script path", t3.getBuildScripts().get(0));
Assert.assertEquals("Move script", "Move script path", t3.getMoveScripts().get(0));
Assert.assertEquals("Termination script", "Termination script path", t3.getTerminationScripts().get(0));
Assert.assertEquals("t5 build", true, t5.isBuildEnabled());
Assert.assertEquals("t5 build failed", false, t5.isBuildFailed());
Assert.assertEquals("t5 built", true, t5.isBuilt());
Assert.assertEquals("t5 built end year", "1954", t5.getBuiltEndYear());
Assert.assertEquals("t5 built start year", "1930", t5.getBuiltStartYear());
Assert.assertEquals("t5 caboose roadr", "t5 caboose road", t5.getCabooseRoad());
Assert.assertEquals("t5 comment", "t5 comment", t5.getCommentWithColor());
Assert.assertEquals("t5 current location name", "Arlington", t5.getCurrentLocationName());
Assert.assertEquals("t5 departure hour", "23", t5.getDepartureTimeHour());
Assert.assertEquals("t5 departure minute", "15", t5.getDepartureTimeMinute());
Assert.assertEquals("t5 engine model", "t5 engine model", t5.getEngineModel());
Assert.assertEquals("t5 engine road", "t5 engine road", t5.getEngineRoad());
Assert.assertEquals("t5 lead engine number", "3", t5.getLeadEngine().getNumber());
Assert.assertEquals("t5 load option", "t5 load option", t5.getLoadOption());
Assert.assertEquals("t5 path name", "t5 pathName", t5.getManifestLogoPathName());
Assert.assertEquals("t5 number of engines", "1", t5.getNumberEngines());
Assert.assertEquals("t5 Owner option", "t5 owner option", t5.getOwnerOption());
Assert.assertEquals("t5 railroad name", "t5 railroad name", t5.getRailroadName());
Assert.assertEquals("t5 requirements", Train.NO_CABOOSE_OR_FRED, t5.getRequirements());
Assert.assertEquals("t5 road option", "t5 road option", t5.getCarRoadOption());
Assert.assertEquals("t5 route", B, t5.getRoute());
Assert.assertEquals("t5 status", Train.UNKNOWN, t5.getStatus());
// now test the train backup file
manager.dispose();
manager = InstanceManager.getDefault(TrainManager.class);
Assert.assertEquals("Starting Number of Trains", 0, manager.getTrainsByIdList().size());
// set file name to backup
InstanceManager.getDefault(TrainManagerXml.class).setOperationsFileName("OperationsJUnitTestTrainRoster.xml.bak");
InstanceManager.getDefault(TrainManagerXml.class).readFile(InstanceManager.getDefault(TrainManagerXml.class).getDefaultOperationsFilename());
// restore file name
InstanceManager.getDefault(TrainManagerXml.class).setOperationsFileName("OperationsJUnitTestTrainRoster.xml");
Assert.assertEquals("Number of Trains", 3, manager.getTrainsByIdList().size());
t1 = manager.getTrainByName("Test Number 1");
t2 = manager.getTrainByName("Test Number 2");
t3 = manager.getTrainByName("Test Number 3");
t4 = manager.getTrainByName("Test Number 4");
t5 = manager.getTrainByName("Test Number 5");
t6 = manager.getTrainByName("Test Number 6");
Assert.assertNotNull("train 1", t1);
Assert.assertNotNull("train 2", t2);
Assert.assertNotNull("train 3", t3);
Assert.assertNull("train 4", t4);
Assert.assertNull("train 5", t5);
Assert.assertNull("train 6", t6);
Assert.assertEquals("t3 build", true, t3.isBuildEnabled());
Assert.assertEquals("t3 build failed", false, t3.isBuildFailed());
Assert.assertEquals("t3 built", true, t3.isBuilt());
Assert.assertEquals("t3 built end year", "1950", t3.getBuiltEndYear());
Assert.assertEquals("t3 built start year", "1925", t3.getBuiltStartYear());
Assert.assertEquals("t3 caboose roadr", "t3 X caboose road", t3.getCabooseRoad());
Assert.assertEquals("t3 comment", "t3 X comment", t3.getCommentWithColor());
Assert.assertEquals("t3 engine model", "t3 X engine model", t3.getEngineModel());
Assert.assertEquals("t3 engine road", "t3 X engine road", t3.getEngineRoad());
Assert.assertEquals("t3 load option", "t3 X load option", t3.getLoadOption());
Assert.assertEquals("t3 path name", "t3 X pathName", t3.getManifestLogoPathName());
Assert.assertEquals("t3 number of engines", "7", t3.getNumberEngines());
Assert.assertEquals("t3 Owner option", "t3 X owner option", t3.getOwnerOption());
Assert.assertEquals("t3 railroad name", "t3 X railroad name", t3.getRailroadName());
Assert.assertEquals("t3 requirements", Train.CABOOSE, t3.getRequirements());
Assert.assertEquals("t3 road option", "t3 X road option", t3.getCarRoadOption());
Assert.assertEquals("t3 status", Train.UNKNOWN, t3.getStatus());
Assert.assertEquals("After script", 0, t3.getAfterBuildScripts().size());
Assert.assertEquals("Build script", 0, t3.getBuildScripts().size());
Assert.assertEquals("Move script", 0, t3.getMoveScripts().size());
Assert.assertEquals("Termination script", 0, t3.getTerminationScripts().size());
jmri.util.JUnitUtil.waitThreadTerminated("Startup Scripts"); // TrainManager.java
}
// from here down is testing infrastructure
@Override
@BeforeEach
public void setUp() {
super.setUp();
Setup.setBuildAggressive(false);
Setup.setStagingTrainCheckEnabled(true);
Setup.setMaxTrainLength(1000);
Setup.setRouterBuildReportLevel(Setup.BUILD_REPORT_VERY_DETAILED);
}
@Override
@AfterEach
public void tearDown() {
super.tearDown();
}
}