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

499 lines
28 KiB
Java

package jmri.jmrit.operations.locations;
import java.awt.Point;
import java.io.File;
import java.util.List;
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.divisions.Division;
import jmri.jmrit.operations.locations.divisions.DivisionManager;
import jmri.jmrit.operations.locations.schedules.*;
import jmri.jmrit.operations.rollingstock.cars.CarTypes;
import jmri.jmrit.operations.setup.OperationsSetupXml;
import jmri.jmrit.operations.setup.Setup;
/**
* Tests for the Operations Locations/Xml class Last manually cross-checked on
* 20090131
*
* @author Bob Coleman Copyright (C) 2008, 2009
*/
public class XmlTest extends OperationsTestCase {
/**
* Test location Xml create and read support. Originally this was three test
* that had to run in the order specified. Now changed on 8/29/2013 to be
* one long test.
*
* @throws Exception exception
*/
@Test
public void testXMLCreate() throws Exception {
LocationManager manager = InstanceManager.getDefault(LocationManager.class);
manager.dispose();
// dispose kills instance, so reload manager
manager = InstanceManager.getDefault(LocationManager.class);
// now load locations
List<Location> locationList = manager.getLocationsByIdList();
Assert.assertEquals("Starting Number of Locations", 0, locationList.size());
Location l1 = manager.newLocation("Test Location 2");
Location l2 = manager.newLocation("Test Location 1");
Location l3 = manager.newLocation("Test Location 3");
Track t1 = l1.addTrack("A Yard track 1", Track.YARD);
Track t2 = l1.addTrack("A Spur track 2", Track.SPUR);
Track t3 = l2.addTrack("An Interchange track 3", Track.INTERCHANGE);
Track t4 = l3.addTrack("A Stage track 4", Track.STAGING);
t1.addRoadName("Track 1 Road");
t1.setRoadOption(Track.INCLUDE_ROADS);
t2.addTypeName("Track 2 Type");
t3.addRoadName("Track 3 Road");
t3.setRoadOption(Track.EXCLUDE_ROADS);
t4.addTypeName("Track 4 Type");
// test icons
l1.setTrainIconEast(new Point(124, 543));
l1.setTrainIconWest(new Point(32, 52));
l1.setTrainIconSouth(new Point(63, 81));
l1.setTrainIconNorth(new Point(23, 632));
l1.setTrainIconRangeX(45);
l1.setTrainIconRangeY(54);
// test default print
l2.setDefaultPrinterName("Default Name For Printer");
// test switch list state
Setup.setSwitchListRealTime(false);
// test load features
t1.addLoadName("Track 1 Load");
t1.setLoadOption(Track.INCLUDE_LOADS);
t3.addLoadName("Track 3 Load");
t3.setLoadOption(Track.EXCLUDE_LOADS);
t4.addShipLoadName("Track 4 Ship Load");
t4.setShipLoadOption(Track.INCLUDE_LOADS);
// test blocking order
t3.setBlockingOrder(2);
// test drop ids
t3.setDropOption(Track.TRAINS);
t3.addDropId("Track 3 train id");
// test pick up ids
t3.setPickupOption(Track.ROUTES);
t3.addPickupId("Track 3 route id");
// test load options
t4.setLoadSwapEnabled(true);
// test block option
t4.setBlockCarsEnabled(true);
// test service order
t3.setServiceOrder(Track.FIFO);
// test pool features
Pool pool = l1.addPool("Test Pool");
t1.setPool(pool);
t1.setPoolMinimumLength(321);
t1.setPoolMaximumLength(54321);
t2.setPool(pool);
t2.setPoolMinimumLength(123);
t2.setPoolMaximumLength(12345);
CarTypes ct = InstanceManager.getDefault(CarTypes.class);
ct.addName("Boxcar");
ct.addName("boxCar");
ct.addName("BoxCar");
ct.addName("Track 2 Type");
ct.addName("Track 4 Type");
// also test schedules
ScheduleManager sm = InstanceManager.getDefault(ScheduleManager.class);
Schedule s1 = sm.newSchedule("Schedule 1 Name");
s1.setComment("Schedule 1 Comment");
ScheduleItem s1i1 = s1.addItem("Boxcar");
s1i1.setRoadName("Schedule 1 Item 1 Road");
s1i1.setReceiveLoadName("Schedule 1 Item 1 Load");
s1i1.setShipLoadName("Schedule 1 Item 1 Ship");
s1i1.setCount(321);
s1i1.setDestination(l1);
s1i1.setDestinationTrack(t2);
s1i1.setComment("Schedule 1 Item 1 Comment");
ScheduleItem s1i2 = s1.addItem("boxcar");
s1i2.setRoadName("Schedule 1 Item 2 Road");
s1i2.setReceiveLoadName("Schedule 1 Item 2 Load");
s1i2.setShipLoadName("Schedule 1 Item 2 Ship");
s1i2.setCount(222);
s1i2.setDestination(l2);
s1i2.setDestinationTrack(t3);
s1i2.setComment("Schedule 1 Item 2 Comment");
Schedule s2 = sm.newSchedule("Schedule 2 Name");
s2.setComment("Schedule 2 Comment");
ScheduleItem s2i1 = s2.addItem("BoxCar");
s2i1.setRoadName("Schedule 2 Item 1 Road");
s2i1.setReceiveLoadName("Schedule 2 Item 1 Load");
s2i1.setShipLoadName("Schedule 2 Item 1 Ship");
s2i1.setCount(123);
s2i1.setComment("Schedule 2 Item 1 Comment");
// test ignore percentage
t2.setIgnoreUsedLengthPercentage(45);
// test destination option
t3.setDestinationOption(Track.INCLUDE_DESTINATIONS);
t3.addDestination(l3);
// test schedule and alternate track features
t2.setSchedule(s1);
t2.setAlternateTrack(t1);
t2.setReservationFactor(33);
t2.setScheduleMode(Track.MATCH);
t2.setScheduleCount(2);
// test divisions
DivisionManager dm = InstanceManager.getDefault(DivisionManager.class);
Division division = dm.newDivision("testDivisionName");
division.setComment("divisionComment");
l3.setDivision(division);
// test comments
t2.setComment("Track 2 comment");
t3.setCommentBoth("Track 3 both comment");
t1.setCommentPickup("Track 1 pick up comment");
t4.setCommentSetout("Track 4 set out comment");
t1.setPrintManifestCommentEnabled(false);
t3.setPrintSwitchListCommentEnabled(true);
locationList = manager.getLocationsByIdList();
Assert.assertEquals("New Location by Id 1", "Test Location 2", locationList.get(0).getName());
Assert.assertEquals("New Location by Id 2", "Test Location 1", locationList.get(1).getName());
Assert.assertEquals("New Location by Id 3", "Test Location 3", locationList.get(2).getName());
Assert.assertEquals("New Location by Name 1", "Test Location 1", manager.getLocationByName("Test Location 1")
.getName());
Assert.assertEquals("New Location by Name 2", "Test Location 2", manager.getLocationByName("Test Location 2")
.getName());
Assert.assertEquals("New Location by Name 3", "Test Location 3", manager.getLocationByName("Test Location 3")
.getName());
manager.getLocationByName("Test Location 1").setComment("Test Location 1 Comment");
manager.getLocationByName("Test Location 1").setSwitchListEnabled(true);
manager.getLocationByName("Test Location 1").setTrainDirections(Location.EAST);
manager.getLocationByName("Test Location 1").addTypeName("Baggage");
manager.getLocationByName("Test Location 1").addTypeName("BoxCar");
manager.getLocationByName("Test Location 1").addTypeName(Bundle.getMessage("Caboose"));
manager.getLocationByName("Test Location 1").addTypeName("Coal");
manager.getLocationByName("Test Location 1").addTypeName("Engine");
manager.getLocationByName("Test Location 1").addTypeName("Hopper");
manager.getLocationByName("Test Location 2").setComment("Test Location 2 Comment");
manager.getLocationByName("Test Location 2").setSwitchListEnabled(false);
manager.getLocationByName("Test Location 2").setTrainDirections(Location.WEST);
manager.getLocationByName("Test Location 2").addTypeName("Baggage");
manager.getLocationByName("Test Location 2").addTypeName("Boxcar");
manager.getLocationByName("Test Location 2").addTypeName(Bundle.getMessage("Caboose"));
manager.getLocationByName("Test Location 2").addTypeName("Coal");
manager.getLocationByName("Test Location 2").addTypeName("Engine");
manager.getLocationByName("Test Location 2").addTypeName("Hopper");
manager.getLocationByName("Test Location 2").addTypeName("Track 2 Type");
manager.getLocationByName("Test Location 3").setComment("Test Location 3 Comment");
manager.getLocationByName("Test Location 3").setSwitchListEnabled(true);
manager.getLocationByName("Test Location 3").setTrainDirections(Location.EAST + Location.WEST + Location.NORTH);
manager.getLocationByName("Test Location 3").addTypeName("Baggage");
manager.getLocationByName("Test Location 3").addTypeName("boxCar");
manager.getLocationByName("Test Location 3").addTypeName(Bundle.getMessage("Caboose"));
manager.getLocationByName("Test Location 3").addTypeName("Coal");
manager.getLocationByName("Test Location 3").addTypeName("Engine");
manager.getLocationByName("Test Location 3").addTypeName("Hopper");
manager.getLocationByName("Test Location 3").addTypeName("Track 4 Type");
locationList = manager.getLocationsByIdList();
Assert.assertEquals("New Number of Locations", 3, locationList.size());
for (int i = 0; i < locationList.size(); i++) {
Location loc = locationList.get(i);
String locname = loc.getName();
if (i == 0) {
Assert.assertEquals("New Location by Id List 1", "Test Location 2", locname);
}
if (i == 1) {
Assert.assertEquals("New Location by Id List 2", "Test Location 1", locname);
}
if (i == 2) {
Assert.assertEquals("New Location by Id List 3", "Test Location 3", locname);
}
}
List<Location> locationListByName = manager.getLocationsByNameList();
Assert.assertEquals("New Number of Locations", 3, locationList.size());
for (int i = 0; i < locationListByName.size(); i++) {
Location loc = locationListByName.get(i);
String locname = loc.getName();
if (i == 0) {
Assert.assertEquals("New Location by Name List 1", "Test Location 1", locname);
}
if (i == 1) {
Assert.assertEquals("New Location by Name List 2", "Test Location 2", locname);
}
if (i == 2) {
Assert.assertEquals("New Location by Name List 3", "Test Location 3", locname);
}
}
InstanceManager.getDefault(LocationManagerXml.class).writeOperationsFile();
manager.newLocation("Test Location 4");
manager.newLocation("Test Location 5");
manager.newLocation("Test Location 6");
manager.getLocationByName("Test Location 2").setComment("Test Location 2 Changed Comment");
InstanceManager.getDefault(LocationManagerXml.class).writeOperationsFile();
locationList = manager.getLocationsByIdList();
Assert.assertEquals("Number of Locations", 6, locationList.size());
// Revert the main xml file back to the backup file.
InstanceManager.getDefault(LocationManagerXml.class).revertBackupFile(
"temp" + File.separator + OperationsSetupXml.getOperationsDirectoryName() + File.separator
+ InstanceManager.getDefault(LocationManagerXml.class).getOperationsFileName());
// Need to dispose of the LocationManager's list and hash table
manager.dispose();
// delete all schedules
InstanceManager.getDefault(ScheduleManager.class).dispose();
// delete divisions
dm.dispose();
ct.addName("Boxcar");
ct.addName("boxCar");
ct.addName("BoxCar");
ct.addName("Track 2 Type");
ct.addName("Track 4 Type");
// The dispose has removed all locations from the Manager.
manager = InstanceManager.getDefault(LocationManager.class);
locationListByName = manager.getLocationsByNameList();
Assert.assertEquals("Starting Number of Locations", 0, locationListByName.size());
Assert.assertEquals("Starting Number of Divisions", 0, dm.getNumberOfdivisions());
// Need to force a re-read of the xml file.
InstanceManager.getDefault(LocationManagerXml.class).readFile(
"temp" + File.separator + OperationsSetupXml.getOperationsDirectoryName() + File.separator
+ InstanceManager.getDefault(LocationManagerXml.class).getOperationsFileName());
// check locations
locationListByName = manager.getLocationsByNameList();
Assert.assertEquals("Starting Number of Locations", 3, locationListByName.size());
Assert.assertEquals("Starting Number of Divisions", 1, dm.getNumberOfdivisions());
for (int i = 0; i < locationListByName.size(); i++) {
Location loc = locationListByName.get(i);
if (i == 0) {
Assert.assertEquals("New Location by Name List 1", "Test Location 1", loc.getName());
Assert.assertEquals("Location 1 direction", Location.EAST, loc.getTrainDirections());
Assert.assertEquals("Location 1 comment", "Test Location 1 Comment", loc.getCommentWithColor());
Assert.assertEquals("Location 1 switchList", true, loc.isSwitchListEnabled());
Assert.assertEquals("Location 1 car type", true, loc.acceptsTypeName("BoxCar"));
Assert.assertEquals("Location 1 car type", false, loc.acceptsTypeName("boxCar"));
Assert.assertEquals("Location 1 car type", true, loc.acceptsTypeName("Boxcar"));
Assert.assertEquals("Location 1 printer name", "Default Name For Printer", loc.getDefaultPrinterName());
List<Track> list = loc.getTracksByNameList(null);
Assert.assertEquals("Location 1 has n tracks", 1, list.size());
Track t = list.get(0);
Assert.assertEquals("Location 1 first track name", "An Interchange track 3", t.getName());
Assert.assertEquals("Location 1 track interchange", true, t.isInterchange());
Assert.assertEquals("Location 1 track road option", Track.EXCLUDE_ROADS, t.getRoadOption());
Assert.assertEquals("Location 1 track road", true, t.isRoadNameAccepted("Track 1 Road"));
Assert.assertEquals("Location 1 track road", false, t.isRoadNameAccepted("Track 3 Road"));
Assert.assertEquals("Location 1 track Load", false, t.isLoadNameAccepted("Track 3 Load"));
Assert.assertEquals("Location 1 blocking order", 2, t.getBlockingOrder());
Assert.assertEquals("Location 1 drop option", Track.TRAINS, t.getDropOption());
Assert.assertEquals("Location 1 drop option id", "Track 3 train id", t.getDropIds()[0]);
Assert.assertEquals("Location 1 pick up option", Track.ROUTES, t.getPickupOption());
Assert.assertEquals("Location 1 pick up option id", "Track 3 route id", t.getPickupIds()[0]);
Assert.assertEquals("Location 1 load swap", false, t.isLoadSwapEnabled());
Assert.assertEquals("Location 1 service order", Track.FIFO, t.getServiceOrder());
Assert.assertNull("Location 1 track pool", t.getPool());
Assert.assertEquals("Location 1 comment", "Track 3 both comment", t.getCommentBoth());
Assert.assertEquals("Location 1 print manifest", true, t.isPrintManifestCommentEnabled());
Assert.assertEquals("Location 1 print switch lists", true, t.isPrintSwitchListCommentEnabled());
}
if (i == 1) {
Assert.assertEquals("New Location by Name List 2", "Test Location 2", loc.getName());
Assert.assertEquals("Location 2 direction", Location.WEST, loc.getTrainDirections());
Assert.assertEquals("Location 2 comment", "Test Location 2 Comment", loc.getCommentWithColor());
Assert.assertEquals("Location 2 switchList", false, loc.isSwitchListEnabled());
Assert.assertEquals("Location 2 car type", true, loc.acceptsTypeName("Boxcar"));
Assert.assertEquals("Location 2 car type", false, loc.acceptsTypeName("boxCar"));
Assert.assertEquals("Location 2 car type", false, loc.acceptsTypeName("BoxCar"));
// icons
Assert.assertEquals("Location 2 Icon East", 124, loc.getTrainIconEast().x);
Assert.assertEquals("Location 2 Icon East", 543, loc.getTrainIconEast().y);
Assert.assertEquals("Location 2 Icon West", 32, loc.getTrainIconWest().x);
Assert.assertEquals("Location 2 Icon West", 52, loc.getTrainIconWest().y);
Assert.assertEquals("Location 2 Icon North", 23, loc.getTrainIconNorth().x);
Assert.assertEquals("Location 2 Icon North", 632, loc.getTrainIconNorth().y);
Assert.assertEquals("Location 2 Icon South", 63, loc.getTrainIconSouth().x);
Assert.assertEquals("Location 2 Icon South", 81, loc.getTrainIconSouth().y);
Assert.assertEquals("Location 2 Icon Range", 45, loc.getTrainIconRangeX());
Assert.assertEquals("Location 2 Icon Range", 54, loc.getTrainIconRangeY());
List<Track> list = loc.getTracksByNameList(null);
Assert.assertEquals("Location 2 has n tracks", 2, list.size());
Track t = list.get(0);
Assert.assertEquals("Location 2 first track name", "A Spur track 2", t.getName());
Assert.assertEquals("Location 2 first track spur", true, t.isSpur());
Assert.assertEquals("Location 2 track 1 road option", Track.ALL_ROADS, t.getRoadOption());
Assert.assertEquals("Location 2 track 1 road", true, t.isRoadNameAccepted("Track 1 Road"));
Assert.assertEquals("Location 2 track 1 road", true, t.isRoadNameAccepted("Track 3 Road"));
Assert.assertEquals("Location 2 track 1 type", true, t.isTypeNameAccepted("Track 2 Type"));
Assert.assertEquals("Location 2 track 1 type", false, t.isTypeNameAccepted("Track 4 Type"));
Assert.assertNotNull("Location 2 track 1 pool exists", t.getPool());
Assert.assertEquals("Location 2 track 1 pool name", "Test Pool", t.getPool().getName());
Assert.assertEquals("Location 2 track 1 pool name", "Test Pool", t.getPoolName());
Assert.assertEquals("Location 2 track 1 min track length", 123, t.getPoolMinimumLength());
Assert.assertEquals("Location 2 track 1 max track length", 12345, t.getPoolMaximumLength());
Assert.assertNotNull("Location 2 track 1 schedule", t.getSchedule());
Assert.assertEquals("Location 2 track 1 schedule name", "Schedule 1 Name", t.getSchedule().getName());
Assert.assertEquals("Location 2 track 1 schedule name", "Schedule 1 Name", t.getScheduleName());
Assert.assertNotNull("Location 2 track 1 alternate track", t.getAlternateTrack());
Assert.assertEquals("Location 2 track 1 alternate track name", "A Yard track 1", t.getAlternateTrack()
.getName());
Assert.assertEquals("Location 2 track 1 schedule mode", Track.MATCH, t.getScheduleMode());
Assert.assertEquals("Location 2 track 1 reservation factor", 33, t.getReservationFactor());
Assert.assertEquals("Location 2 track 1 schedule count", 2, t.getScheduleCount());
Assert.assertEquals("Location 2 track 1 comment", "Track 2 comment", t.getComment());
Assert.assertEquals("Location 2 track 1 print manifests", true, t.isPrintManifestCommentEnabled());
Assert.assertEquals("Location 2 print switch lists", false, t.isPrintSwitchListCommentEnabled());
t = list.get(1);
Assert.assertEquals("Location 2 2nd track name", "A Yard track 1", t.getName());
Assert.assertEquals("Location 2 track 2 road option", Track.INCLUDE_ROADS, t.getRoadOption());
Assert.assertEquals("Location 2 track 2 road", true, t.isRoadNameAccepted("Track 1 Road"));
Assert.assertEquals("Location 2 track 2 road", false, t.isRoadNameAccepted("Track 3 Road"));
Assert.assertEquals("Location 2 track 2 type", false, t.isTypeNameAccepted("Track 2 Type"));
Assert.assertEquals("Location 2 track 2 type", false, t.isTypeNameAccepted("Track 4 Type"));
Assert.assertNotNull("Location 2 track 2 pool exists", t.getPool());
Assert.assertEquals("Location 2 track 2 pool name", "Test Pool", t.getPool().getName());
Assert.assertEquals("Location 2 track 2 min track length", 321, t.getPoolMinimumLength());
Assert.assertEquals("Location 2 track 2 max track length", 54321, t.getPoolMaximumLength());
Assert.assertEquals("Location 2 track 2 comment", "", t.getCommentBoth());
Assert.assertEquals("Location 2 track 2 print manifests", false, t.isPrintManifestCommentEnabled());
Assert.assertEquals("Location 2 print switch lists", false, t.isPrintSwitchListCommentEnabled());
}
if (i == 2) {
Assert.assertEquals("New Location by Name List 3", "Test Location 3", loc.getName());
Assert.assertEquals("Location 3 direction", Location.EAST + Location.WEST + Location.NORTH, loc
.getTrainDirections());
Assert.assertEquals("Location 3 comment", "Test Location 3 Comment", loc.getCommentWithColor());
Assert.assertEquals("Location 3 switchList", true, loc.isSwitchListEnabled());
Assert.assertEquals("Location 3 car type", true, loc.acceptsTypeName("boxCar"));
Assert.assertEquals("Location 3 car type", false, loc.acceptsTypeName("BoxCar"));
Assert.assertEquals("Location 3 car type", true, loc.acceptsTypeName("Boxcar"));
Assert.assertEquals("Location 3 division", "testDivisionName", loc.getDivisionName());
List<Track> list = loc.getTracksByNameList(null);
Assert.assertEquals("Location 3 has n tracks", 1, list.size());
Track t = list.get(0);
Assert.assertEquals("Location 3 first track name", "A Stage track 4", t.getName());
Assert.assertEquals("Location 3 track 1", true, t.isStaging());
Assert.assertEquals("Location 3 track 1 road option", Track.ALL_ROADS, t.getRoadOption());
Assert.assertEquals("Location 3 track 1 road", true, t.isRoadNameAccepted("Track 1 Road"));
Assert.assertEquals("Location 3 track 1 road", true, t.isRoadNameAccepted("Track 3 Road"));
Assert.assertEquals("Location 3 track type", false, t.isTypeNameAccepted("Track 2 Type"));
Assert.assertEquals("Location 3 track type", true, t.isTypeNameAccepted("Track 4 Type"));
Assert.assertEquals("Location 3 ship option", Track.INCLUDE_LOADS, t.getShipLoadOption());
Assert.assertEquals("Location 3 ship load", true, t.isLoadNameShipped("Track 4 Ship Load"));
Assert.assertEquals("Location 3 load swap", true, t.isLoadSwapEnabled());
Assert.assertEquals("Location 3 blocking", true, t.isBlockCarsEnabled());
Assert.assertNull("Location 3 track pool", t.getPool());
Assert.assertEquals("Location 3 comment", "Track 4 set out comment", t.getCommentSetout());
}
}
// check Schedules
sm = InstanceManager.getDefault(ScheduleManager.class);
List<Schedule> list = sm.getSchedulesByNameList();
Assert.assertEquals("There should be 2 schedules", 2, list.size());
s1 = list.get(0);
s2 = list.get(1);
Assert.assertEquals("Schedule 1 name", "Schedule 1 Name", s1.getName());
Assert.assertEquals("Schedule 2 name", "Schedule 2 Name", s2.getName());
Assert.assertEquals("Schedule 1 comment", "Schedule 1 Comment", s1.getComment());
Assert.assertEquals("Schedule 2 comment", "Schedule 2 Comment", s2.getComment());
List<ScheduleItem> s1items = s1.getItemsBySequenceList();
Assert.assertEquals("There should be 2 items", 2, s1items.size());
ScheduleItem si1 = s1items.get(0);
Assert.assertEquals("Item 1 type", "Boxcar", si1.getTypeName());
Assert.assertEquals("Item 1 load", "Schedule 1 Item 1 Load", si1.getReceiveLoadName());
Assert.assertEquals("Item 1 ship", "Schedule 1 Item 1 Ship", si1.getShipLoadName());
Assert.assertEquals("Item 1 type", "Schedule 1 Item 1 Comment", si1.getComment());
Assert.assertEquals("Item 1 road", "Schedule 1 Item 1 Road", si1.getRoadName());
Assert.assertEquals("Item 1 count", 321, si1.getCount());
Assert.assertEquals("Item 1 destination", "Test Location 2", si1.getDestinationName());
Assert.assertEquals("Item 1 track", "A Spur track 2", si1.getDestinationTrackName());
ScheduleItem si2 = s1items.get(1);
Assert.assertEquals("Item 2 type", "boxcar", si2.getTypeName());
Assert.assertEquals("Item 2 load", "Schedule 1 Item 2 Load", si2.getReceiveLoadName());
Assert.assertEquals("Item 2 ship", "Schedule 1 Item 2 Ship", si2.getShipLoadName());
Assert.assertEquals("Item 2 type", "Schedule 1 Item 2 Comment", si2.getComment());
Assert.assertEquals("Item 2 road", "Schedule 1 Item 2 Road", si2.getRoadName());
Assert.assertEquals("Item 2 count", 222, si2.getCount());
Assert.assertEquals("Item 2 destination", "Test Location 1", si2.getDestinationName());
Assert.assertEquals("Item 2 track", "An Interchange track 3", si2.getDestinationTrackName());
List<ScheduleItem> s2items = s2.getItemsBySequenceList();
Assert.assertEquals("There should be 1 items", 1, s2items.size());
ScheduleItem si3 = s2items.get(0);
Assert.assertEquals("Item 3 type", "BoxCar", si3.getTypeName());
Assert.assertEquals("Item 3 load", "Schedule 2 Item 1 Load", si3.getReceiveLoadName());
Assert.assertEquals("Item 3 ship", "Schedule 2 Item 1 Ship", si3.getShipLoadName());
Assert.assertEquals("Item 3 type", "Schedule 2 Item 1 Comment", si3.getComment());
Assert.assertEquals("Item 3 type", "Schedule 2 Item 1 Road", si3.getRoadName());
Assert.assertEquals("Item 3 count", 123, si3.getCount());
Assert.assertEquals("Item 3 destination", "", si3.getDestinationName());
Assert.assertEquals("Item 3 track", "", si3.getDestinationTrackName());
// confirm division
Assert.assertEquals("Divsion Name", "testDivisionName", dm.getDivisionsByIdList().get(0).getName());
Assert.assertEquals("Divsion Comment", "divisionComment", dm.getDivisionsByIdList().get(0).getComment());
// delete all locations
manager.dispose();
// delete all schedules
sm.dispose();
// clear out the file
InstanceManager.getDefault(LocationManagerXml.class).writeOperationsFile();
}
// TODO: Add tests for adding + deleting the same cars
// TODO: Add tests for track locations
// TODO: Add test to create xml file
// TODO: Add test to read xml file
@Override
@BeforeEach
public void setUp() {
super.setUp();
InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.CarTypes.class).addName("Boxcar");
}
}