729 lines
33 KiB
Java
729 lines
33 KiB
Java
package jmri.jmrit.operations.routes;
|
|
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
import javax.swing.JComboBox;
|
|
|
|
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.locations.Location;
|
|
import jmri.jmrit.operations.locations.LocationManager;
|
|
import jmri.jmrit.operations.trains.Train;
|
|
import jmri.jmrit.operations.trains.TrainManager;
|
|
|
|
/**
|
|
* Tests for the Operations Route class. Last manually cross-checked on 20090131.
|
|
* <p>
|
|
* Still to do: Route: Route Location <-- Need to verify Route: XML read/write
|
|
* RouteLocation: get/set Staging Track RouteLocation: location <--Need to
|
|
* verify RouteLocation: XML read/write
|
|
*
|
|
* @author Bob Coleman Copyright (C) 2008, 2009
|
|
*/
|
|
public class OperationsRoutesTest extends OperationsTestCase {
|
|
|
|
// test Route creation
|
|
@Test
|
|
public void testCreate() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
r1.setComment("TESTCOMMENT");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
Assert.assertEquals("Route Comment", "TESTCOMMENT", r1.getComment());
|
|
}
|
|
|
|
// test Route public constants
|
|
@Test
|
|
public void testConstants() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
|
|
Assert.assertEquals("Route Constant EAST", 1, Route.EAST);
|
|
Assert.assertEquals("Route Constant WEST", 2, Route.WEST);
|
|
Assert.assertEquals("Route Constant NORTH", 4, Route.NORTH);
|
|
Assert.assertEquals("Route Constant SOUTH", 8, Route.SOUTH);
|
|
|
|
Assert.assertEquals("Route Constant LISTCHANGE_CHANGED_PROPERTY", "routeListChange",
|
|
Route.LISTCHANGE_CHANGED_PROPERTY);
|
|
Assert.assertEquals("Route Constant DISPOSE", "routeDispose", Route.DISPOSE);
|
|
}
|
|
|
|
// test Route attributes
|
|
@Test
|
|
public void testAttributes() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
Assert.assertEquals("Route toString", "TESTROUTENAME", r1.toString());
|
|
|
|
r1.setName("TESTNEWNAME");
|
|
Assert.assertEquals("Route New Name", "TESTNEWNAME", r1.getName());
|
|
}
|
|
|
|
// test route location
|
|
@Test
|
|
public void testRouteLocation() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
|
|
Location l1 = new Location("TESTLOCATIONID1", "TESTLOCATIONNAME1");
|
|
|
|
RouteLocation rl1 = new RouteLocation("TESTROUTELOCATIONID", l1);
|
|
|
|
Assert.assertEquals("Route Location Id", "TESTROUTELOCATIONID", rl1.getId());
|
|
Assert.assertEquals("Route Location Name", "TESTLOCATIONNAME1", rl1.getName());
|
|
}
|
|
|
|
// test public RouteLocation constants
|
|
@Test
|
|
public void testRouteLocationConstants() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Location l1 = new Location("TESTLOCATIONID1", "TESTLOCATIONNAME1");
|
|
|
|
RouteLocation rl1 = new RouteLocation("TESTROUTELOCATIONID", l1);
|
|
Assert.assertNotNull("exists", rl1);
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
|
|
Assert.assertEquals("RouteLocation Constant EAST", 1, RouteLocation.EAST);
|
|
Assert.assertEquals("RouteLocation Constant WEST", 2, RouteLocation.WEST);
|
|
Assert.assertEquals("RouteLocation Constant NORTH", 4, RouteLocation.NORTH);
|
|
Assert.assertEquals("RouteLocation Constant SOUTH", 8, RouteLocation.SOUTH);
|
|
|
|
Assert.assertEquals("RouteLocation Constant EAST_DIR", Bundle.getMessage("East"), RouteLocation.EAST_DIR);
|
|
Assert.assertEquals("RouteLocation Constant WEST_DIR", Bundle.getMessage("West"), RouteLocation.WEST_DIR);
|
|
Assert.assertEquals("RouteLocation Constant NORTH_DIR", Bundle.getMessage("North"), RouteLocation.NORTH_DIR);
|
|
Assert.assertEquals("RouteLocation Constant SOUTH_DIR", Bundle.getMessage("South"), RouteLocation.SOUTH_DIR);
|
|
|
|
Assert.assertEquals("RouteLocation Constant DROP_CHANGED_PROPERTY", "dropChange",
|
|
RouteLocation.DROP_CHANGED_PROPERTY);
|
|
Assert.assertEquals("RouteLocation Constant PICKUP_CHANGED_PROPERTY", "pickupChange",
|
|
RouteLocation.PICKUP_CHANGED_PROPERTY);
|
|
Assert.assertEquals("RouteLocation Constant MAXMOVES_CHANGED_PROPERTY", "maxMovesChange",
|
|
RouteLocation.MAX_MOVES_CHANGED_PROPERTY);
|
|
Assert.assertEquals("RouteLocation Constant DISPOSE", "routeLocationDispose", RouteLocation.DISPOSE);
|
|
}
|
|
|
|
// test RouteLocation attributes
|
|
@Test
|
|
public void testRouteLocationAttributes() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
|
|
Location l1 = new Location("TESTLOCATIONID1", "TESTLOCATIONNAME1");
|
|
|
|
RouteLocation rl1 = new RouteLocation("TESTROUTELOCATIONID", l1);
|
|
rl1.setSequenceNumber(4);
|
|
rl1.setComment("TESTROUTELOCATIONCOMMENT");
|
|
rl1.setMaxTrainLength(320);
|
|
rl1.setTrainLength(220);
|
|
rl1.setTrainWeight(240);
|
|
rl1.setMaxCarMoves(32);
|
|
rl1.setCarMoves(10);
|
|
rl1.setGrade(2.0);
|
|
rl1.setTrainIconX(12);
|
|
rl1.setTrainIconY(8);
|
|
|
|
Assert.assertEquals("RouteLocation Id", "TESTROUTELOCATIONID", rl1.getId());
|
|
Assert.assertEquals("RouteLocation Name", "TESTLOCATIONNAME1", rl1.getName());
|
|
Assert.assertEquals("RouteLocation toString", "TESTLOCATIONNAME1", rl1.toString());
|
|
|
|
Assert.assertEquals("RouteLocation Comment", "TESTROUTELOCATIONCOMMENT", rl1.getComment());
|
|
Assert.assertEquals("RouteLocation Sequence", 4, rl1.getSequenceNumber());
|
|
|
|
Assert.assertEquals("RouteLocation Max Train Length", 320, rl1.getMaxTrainLength());
|
|
Assert.assertEquals("RouteLocation Train Length", 220, rl1.getTrainLength());
|
|
Assert.assertEquals("RouteLocation Train Weight", 240, rl1.getTrainWeight());
|
|
Assert.assertEquals("RouteLocation Max Car Moves", 32, rl1.getMaxCarMoves());
|
|
Assert.assertEquals("RouteLocation Car Moves", 10, rl1.getCarMoves());
|
|
Assert.assertEquals("RouteLocation Grade", "2.0", Double.toString(rl1.getGrade()));
|
|
Assert.assertEquals("RouteLocation Icon X", 12, rl1.getTrainIconX());
|
|
Assert.assertEquals("RouteLocation Icon Y", 8, rl1.getTrainIconY());
|
|
|
|
rl1.setTrainDirection(RouteLocation.EAST);
|
|
Assert.assertEquals("RouteLocation Train Direction East", 1, rl1.getTrainDirection());
|
|
|
|
rl1.setTrainDirection(RouteLocation.WEST);
|
|
Assert.assertEquals("RouteLocation Train Direction West", 2, rl1.getTrainDirection());
|
|
|
|
rl1.setTrainDirection(RouteLocation.NORTH);
|
|
Assert.assertEquals("RouteLocation Train Direction North", 4, rl1.getTrainDirection());
|
|
|
|
rl1.setTrainDirection(RouteLocation.SOUTH);
|
|
Assert.assertEquals("RouteLocation Train Direction South", 8, rl1.getTrainDirection());
|
|
|
|
// rl1.setCanDrop(true);
|
|
Assert.assertEquals("RouteLocation Train can drop initial", true, rl1.isDropAllowed());
|
|
|
|
rl1.setDropAllowed(false);
|
|
Assert.assertEquals("RouteLocation Train can drop false", false, rl1.isDropAllowed());
|
|
|
|
rl1.setDropAllowed(true);
|
|
Assert.assertEquals("RouteLocation Train can drop true", true, rl1.isDropAllowed());
|
|
|
|
// rl1.setCanPickup(true);
|
|
Assert.assertEquals("RouteLocation Train can Pickup initial", true, rl1.isPickUpAllowed());
|
|
|
|
rl1.setPickUpAllowed(false);
|
|
Assert.assertEquals("RouteLocation Train can Pickup false", false, rl1.isPickUpAllowed());
|
|
|
|
rl1.setPickUpAllowed(true);
|
|
Assert.assertEquals("RouteLocation Train can Pickup true", true, rl1.isPickUpAllowed());
|
|
}
|
|
|
|
// test route location management
|
|
@Test
|
|
public void testRouteLocationManagement() {
|
|
Route r1 = new Route("TESTROUTEID", "TESTROUTENAME");
|
|
|
|
Assert.assertEquals("Route Id", "TESTROUTEID", r1.getId());
|
|
Assert.assertEquals("Route Name", "TESTROUTENAME", r1.getName());
|
|
|
|
RouteLocation rladd;
|
|
|
|
Location l1 = new Location("TESTLOCATIONID1", "TESTLOCATIONNAME1");
|
|
rladd = r1.addLocation(l1);
|
|
|
|
Location l2 = new Location("TESTLOCATIONID2", "TESTLOCATIONNAME2");
|
|
rladd = r1.addLocation(l2);
|
|
|
|
Location l3 = new Location("TESTLOCATIONID3", "TESTLOCATIONNAME3");
|
|
rladd = r1.addLocation(l3);
|
|
|
|
Assert.assertNotNull("exists", rladd);
|
|
|
|
RouteLocation rl1test;
|
|
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME1");
|
|
Assert.assertEquals("Add Location 1", "TESTLOCATIONNAME1", rl1test.getName());
|
|
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME2");
|
|
Assert.assertEquals("Add Location 2", "TESTLOCATIONNAME2", rl1test.getName());
|
|
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME3");
|
|
Assert.assertEquals("Add Location 3", "TESTLOCATIONNAME3", rl1test.getName());
|
|
|
|
// Check that locations are in the expected order
|
|
List<RouteLocation> list = r1.getLocationsBySequenceList();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
rl1test = list.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("List Location 1 before", "TESTLOCATIONNAME1", rl1test.getName());
|
|
Assert.assertEquals("List Location 1 sequence id", 1, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("List Location 2 before", "TESTLOCATIONNAME2", rl1test.getName());
|
|
Assert.assertEquals("List Location 2 sequence id", 2, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("List Location 3 before", "TESTLOCATIONNAME3", rl1test.getName());
|
|
Assert.assertEquals("List Location 3 sequence id", 3, rl1test.getSequenceNumber());
|
|
}
|
|
}
|
|
|
|
// Add a fourth location but put it in the second spot and check that locations are in the expected order
|
|
Location l4 = new Location("TESTLOCATIONID4", "TESTLOCATIONNAME4");
|
|
rladd = r1.addLocation(l4, 2);
|
|
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME4");
|
|
Assert.assertEquals("Add Location 4", "TESTLOCATIONNAME4", rl1test.getName());
|
|
|
|
list = r1.getLocationsBySequenceList();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
rl1test = list.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("List Location 1 after", "TESTLOCATIONNAME1", rl1test.getName());
|
|
Assert.assertEquals("List Location 1 sequence id", 1, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("List Location 2 after", "TESTLOCATIONNAME4", rl1test.getName());
|
|
Assert.assertEquals("List Location 2 sequence id", 2, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("List Location 3 after", "TESTLOCATIONNAME2", rl1test.getName());
|
|
Assert.assertEquals("List Location 3 sequence id", 3, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 3) {
|
|
Assert.assertEquals("List Location 4 after", "TESTLOCATIONNAME3", rl1test.getName());
|
|
Assert.assertEquals("List Location 4 sequence id", 4, rl1test.getSequenceNumber());
|
|
}
|
|
}
|
|
|
|
// Move up the third location and check that locations are in the expected order
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME3");
|
|
r1.moveLocationUp(rl1test);
|
|
list = r1.getLocationsBySequenceList();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
rl1test = list.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("List Location 1 after move up", "TESTLOCATIONNAME1", rl1test.getName());
|
|
Assert.assertEquals("List Location 1 sequence id", 1, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("List Location 2 after move up", "TESTLOCATIONNAME4", rl1test.getName());
|
|
Assert.assertEquals("List Location 2 sequence id", 2, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("List Location 3 after move up", "TESTLOCATIONNAME3", rl1test.getName());
|
|
Assert.assertEquals("List Location 3 sequence id", 3, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 3) {
|
|
Assert.assertEquals("List Location 4 after move up", "TESTLOCATIONNAME2", rl1test.getName());
|
|
Assert.assertEquals("List Location 4 sequence id", 4, rl1test.getSequenceNumber());
|
|
}
|
|
}
|
|
|
|
// Move down the first location down 2 and check that locations are in the expected order
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME1");
|
|
r1.moveLocationDown(rl1test);
|
|
r1.moveLocationDown(rl1test);
|
|
list = r1.getLocationsBySequenceList();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
rl1test = list.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("List Location 1 after move up", "TESTLOCATIONNAME4", rl1test.getName());
|
|
Assert.assertEquals("List Location 1 sequence id", 1, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("List Location 2 after move up", "TESTLOCATIONNAME3", rl1test.getName());
|
|
Assert.assertEquals("List Location 2 sequence id", 2, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("List Location 3 after move up", "TESTLOCATIONNAME1", rl1test.getName());
|
|
Assert.assertEquals("List Location 3 sequence id", 3, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 3) {
|
|
Assert.assertEquals("List Location 4 after move up", "TESTLOCATIONNAME2", rl1test.getName());
|
|
Assert.assertEquals("List Location 4 sequence id", 4, rl1test.getSequenceNumber());
|
|
}
|
|
}
|
|
|
|
// Delete the third location and check that locations are in the expected order
|
|
rl1test = r1.getLastLocationByName("TESTLOCATIONNAME3");
|
|
r1.deleteLocation(rl1test);
|
|
list = r1.getLocationsBySequenceList();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
rl1test = list.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("List Location 1 after move up", "TESTLOCATIONNAME4", rl1test.getName());
|
|
Assert.assertEquals("List Location 1 sequence id", 1, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("List Location 2 after move up", "TESTLOCATIONNAME1", rl1test.getName());
|
|
Assert.assertEquals("List Location 2 sequence id", 2, rl1test.getSequenceNumber());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("List Location 3 after move up", "TESTLOCATIONNAME2", rl1test.getName());
|
|
Assert.assertEquals("List Location 3 sequence id", 3, rl1test.getSequenceNumber());
|
|
}
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testRouteManager() {
|
|
RouteManager rm = InstanceManager.getDefault(RouteManager.class);
|
|
List<Route> listById = rm.getRoutesByIdList();
|
|
List<Route> listByName = rm.getRoutesByNameList();
|
|
|
|
Assert.assertEquals("Route id list is empty", true, listById.isEmpty());
|
|
Assert.assertEquals("Route name list is empty", true, listByName.isEmpty());
|
|
|
|
Route route1 = rm.newRoute("testRoute");
|
|
|
|
listById = rm.getRoutesByIdList();
|
|
listByName = rm.getRoutesByNameList();
|
|
|
|
Assert.assertEquals("Route id list should not be empty", false, listById.isEmpty());
|
|
Assert.assertEquals("Route name list should not be empty", false, listByName.isEmpty());
|
|
|
|
// now see if list sort works properly
|
|
Route route2 = rm.newRoute("atestRoute");
|
|
Route route3 = rm.newRoute("ztestRoute");
|
|
Route route4 = rm.newRoute("dtestRoute");
|
|
|
|
// create the same named route
|
|
Route route5 = rm.newRoute("atestRoute");
|
|
rm.register(route2);
|
|
|
|
// also try and re-register the same route
|
|
rm.register(route4);
|
|
|
|
listById = rm.getRoutesByIdList();
|
|
listByName = rm.getRoutesByNameList();
|
|
Assert.assertEquals("Route id list should have 4 routes", 4, listById.size());
|
|
Assert.assertEquals("Route name list should have 4 routes", 4, listByName.size());
|
|
|
|
// check the order
|
|
for (int i = 0; i < listById.size(); i++) {
|
|
Route r = listById.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "testRoute", r.getName());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("2nd route name by id", "atestRoute", r.getName());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("3rd route name by id", "ztestRoute", r.getName());
|
|
}
|
|
if (i == 3) {
|
|
Assert.assertEquals("4th route name by id", "dtestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// check the order
|
|
for (int i = 0; i < listByName.size(); i++) {
|
|
Route r = listByName.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "atestRoute", r.getName());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("2nd route name by id", "dtestRoute", r.getName());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("3rd route name by id", "testRoute", r.getName());
|
|
}
|
|
if (i == 3) {
|
|
Assert.assertEquals("4th route name by id", "ztestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// test the get routeByName
|
|
Route route6 = rm.getRouteByName("dtestRoute");
|
|
|
|
Assert.assertEquals("Route name should be", "dtestRoute", route6.getName());
|
|
Assert.assertEquals("Route names should match", route6.getName(), route4.getName());
|
|
Assert.assertEquals("Routes should match", route6, route4);
|
|
|
|
// now remove a route
|
|
rm.deregister(route1); // remove testRoute
|
|
|
|
listById = rm.getRoutesByIdList();
|
|
listByName = rm.getRoutesByNameList();
|
|
Assert.assertEquals("Route id list should have 3 routes", 3, listById.size());
|
|
Assert.assertEquals("Route name list should have 3 routes", 3, listByName.size());
|
|
|
|
// check the order
|
|
for (int i = 0; i < listById.size(); i++) {
|
|
Route r = listById.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "atestRoute", r.getName());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("2nd route name by id", "ztestRoute", r.getName());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("4th route name by id", "dtestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// check the order
|
|
for (int i = 0; i < listByName.size(); i++) {
|
|
Route r = listByName.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "atestRoute", r.getName());
|
|
}
|
|
if (i == 1) {
|
|
Assert.assertEquals("2nd route name by id", "dtestRoute", r.getName());
|
|
}
|
|
if (i == 2) {
|
|
Assert.assertEquals("3rd route name by id", "ztestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// test the combo box
|
|
JComboBox<Route> b = rm.getComboBox();
|
|
Assert.assertEquals("ComboBox item count", 4, b.getItemCount());
|
|
Assert.assertEquals("First combo item", null, b.getItemAt(0));
|
|
Assert.assertEquals("First combo route", route2, b.getItemAt(1));
|
|
Assert.assertEquals("2nd combo route", route4, b.getItemAt(2));
|
|
Assert.assertEquals("3rd combo route", route3, b.getItemAt(3));
|
|
|
|
// now remove two routes
|
|
rm.deregister(route4); // remove dtestRoute
|
|
rm.deregister(route3); // remove ztestRoute
|
|
|
|
listById = rm.getRoutesByIdList();
|
|
listByName = rm.getRoutesByNameList();
|
|
Assert.assertEquals("Route id list should have 1 route", 1, listById.size());
|
|
Assert.assertEquals("Route name list should have 1 route", 1, listByName.size());
|
|
|
|
// check the order
|
|
for (int i = 0; i < listById.size(); i++) {
|
|
Route r = listById.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "atestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// check the order
|
|
for (int i = 0; i < listByName.size(); i++) {
|
|
Route r = listByName.get(i);
|
|
if (i == 0) {
|
|
Assert.assertEquals("First route name by id", "atestRoute", r.getName());
|
|
}
|
|
}
|
|
|
|
// test combo box update
|
|
rm.updateComboBox(b);
|
|
Assert.assertEquals("ComboBox item count", 2, b.getItemCount());
|
|
Assert.assertEquals("First combo item", null, b.getItemAt(0));
|
|
Assert.assertEquals("First combo route", route2, b.getItemAt(1));
|
|
|
|
// finish up by deleting the last route
|
|
rm.deregister(route5);
|
|
listById = rm.getRoutesByIdList();
|
|
listByName = rm.getRoutesByNameList();
|
|
Assert.assertEquals("Route id list is empty", true, listById.isEmpty());
|
|
Assert.assertEquals("Route name list is empty", true, listByName.isEmpty());
|
|
}
|
|
|
|
// test route status
|
|
@Test
|
|
public void testRouteStatus() {
|
|
RouteManager rm = InstanceManager.getDefault(RouteManager.class);
|
|
Route r = rm.newRoute("TestRouteStatus");
|
|
// note that the status strings are defined in JmritOperationsRoutesBundle.properties
|
|
Assert.assertEquals("Route status error", "Error", r.getStatus());
|
|
|
|
// now add a location to the route
|
|
Location l = InstanceManager.getDefault(LocationManager.class).newLocation("TestRouteStatusLoc");
|
|
r.addLocation(l);
|
|
// note that the status strings are defined in JmritOperationsRoutesBundle.properties
|
|
Assert.assertEquals("Route status ophan", "Orphan", r.getStatus());
|
|
|
|
// now connect route to a train
|
|
Train t = InstanceManager.getDefault(TrainManager.class).newTrain("TestRouteStatusTrain");
|
|
t.setRoute(r);
|
|
// note that the status strings are defined in JmritOperationsRoutesBundle.properties
|
|
Assert.assertEquals("Route status okay", "OK", r.getStatus());
|
|
}
|
|
|
|
/**
|
|
* Test route Xml create, read, and backup support. Originally written as
|
|
* three separate tests, now combined into one as of 8/29/2013
|
|
*
|
|
* @throws JDOMException exception
|
|
* @throws IOException exception
|
|
*/
|
|
@Test
|
|
public void testXMLCreate() throws JDOMException, IOException {
|
|
|
|
RouteManager manager = InstanceManager.getDefault(RouteManager.class);
|
|
List<Route> temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("Starting Number of Routes", 0, temprouteList.size());
|
|
|
|
Route r1 = manager.newRoute("Test Number 1");
|
|
Route r2 = manager.newRoute("Test Number 2");
|
|
Route r3 = manager.newRoute("Test Number 3");
|
|
|
|
temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("New Number of Routes", 3, temprouteList.size());
|
|
|
|
InstanceManager.getDefault(RouteManagerXml.class).writeOperationsFile();
|
|
|
|
// Add some more routes and write file again
|
|
// so we can test the backup facility
|
|
Route r4 = manager.newRoute("Test Number 4");
|
|
Route r5 = manager.newRoute("Test Number 5");
|
|
Route r6 = manager.newRoute("Test Number 6");
|
|
|
|
Assert.assertNotNull("route r1 exists", r1);
|
|
Assert.assertNotNull("route r2 exists", r2);
|
|
Assert.assertNotNull("route r3 exists", r3);
|
|
Assert.assertNotNull("route r4 exists", r4);
|
|
Assert.assertNotNull("route r5 exists", r5);
|
|
Assert.assertNotNull("route r6 exists", r6);
|
|
|
|
LocationManager lmanager = InstanceManager.getDefault(LocationManager.class);
|
|
Location Acton = lmanager.newLocation("Acton");
|
|
Location Bedford = lmanager.newLocation("Bedford");
|
|
Location Chelmsford = lmanager.newLocation("Chelmsford");
|
|
|
|
r1.setComment("r1 comment");
|
|
RouteLocation r1l1 = r1.addLocation(Acton);
|
|
r1.addLocation(Bedford);
|
|
r1.addLocation(Chelmsford);
|
|
r1.addLocation(Bedford);
|
|
r1.addLocation(Acton);
|
|
|
|
r1l1.setDropAllowed(false);
|
|
r1l1.setPickUpAllowed(false);
|
|
r1l1.setCarMoves(3); // this value isn't saved
|
|
r1l1.setComment("rl1 comment");
|
|
r1l1.setGrade(5d);
|
|
r1l1.setMaxCarMoves(8);
|
|
r1l1.setMaxTrainLength(345);
|
|
r1l1.setTrainDirection(Location.SOUTH);
|
|
r1l1.setTrainIconX(56);
|
|
r1l1.setTrainIconY(78);
|
|
r1l1.setTrainLength(234); // this value isn't saved
|
|
r1l1.setTrainWeight(987); // this value isn't saved
|
|
|
|
r2.setComment("r2 comment");
|
|
r2.addLocation(Chelmsford);
|
|
RouteLocation r2l2 = r2.addLocation(Bedford);
|
|
r2.addLocation(Chelmsford);
|
|
RouteLocation r2l4 = r2.addLocation(Bedford);
|
|
|
|
r2l2.setDropAllowed(false);
|
|
r2l2.setPickUpAllowed(true);
|
|
r2l2.setCarMoves(3); // this value isn't saved
|
|
r2l2.setComment("r2l2 comment");
|
|
r2l2.setGrade(1d);
|
|
r2l2.setMaxCarMoves(181);
|
|
r2l2.setMaxTrainLength(4561);
|
|
r2l2.setTrainDirection(Location.EAST);
|
|
r2l2.setTrainIconX(651);
|
|
r2l2.setTrainIconY(871);
|
|
r2l2.setTrainLength(234); // this value isn't saved
|
|
r2l2.setTrainWeight(987); // this value isn't saved
|
|
|
|
r2l4.setDropAllowed(true);
|
|
r2l4.setPickUpAllowed(false);
|
|
r2l4.setCarMoves(3); // this value isn't saved
|
|
r2l4.setComment("r2l4 comment");
|
|
r2l4.setGrade(2d);
|
|
r2l4.setMaxCarMoves(18);
|
|
r2l4.setMaxTrainLength(456);
|
|
r2l4.setTrainDirection(Location.NORTH);
|
|
r2l4.setTrainIconX(65);
|
|
r2l4.setTrainIconY(87);
|
|
r2l4.setTrainLength(234); // this value isn't saved
|
|
r2l4.setTrainWeight(987); // this value isn't saved
|
|
|
|
r3.setComment("r3 comment");
|
|
r4.setComment("r4 comment");
|
|
r5.setComment("r5 comment");
|
|
r6.setComment("r6 comment");
|
|
|
|
InstanceManager.getDefault(RouteManagerXml.class).writeOperationsFile();
|
|
|
|
// now perform read operation
|
|
manager.dispose();
|
|
manager = InstanceManager.getDefault(RouteManager.class);
|
|
temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("Starting Number of Routes", 0, temprouteList.size());
|
|
|
|
InstanceManager.getDefault(RouteManagerXml.class).readFile(InstanceManager.getDefault(RouteManagerXml.class).getDefaultOperationsFilename());
|
|
temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("Number of Routes", 6, temprouteList.size());
|
|
|
|
r1 = manager.getRouteByName("Test Number 1");
|
|
r2 = manager.getRouteByName("Test Number 2");
|
|
r3 = manager.getRouteByName("Test Number 3");
|
|
r4 = manager.getRouteByName("Test Number 4");
|
|
r5 = manager.getRouteByName("Test Number 5");
|
|
r6 = manager.getRouteByName("Test Number 6");
|
|
|
|
Assert.assertNotNull("route r1 exists", r1);
|
|
Assert.assertNotNull("route r2 exists", r2);
|
|
Assert.assertNotNull("route r3 exists", r3);
|
|
Assert.assertNotNull("route r4 exists", r4);
|
|
Assert.assertNotNull("route r5 exists", r5);
|
|
Assert.assertNotNull("route r6 exists", r6);
|
|
|
|
Assert.assertEquals("r1 comment", "r1 comment", r1.getComment());
|
|
List<RouteLocation> locs = r1.getLocationsBySequenceList();
|
|
Assert.assertEquals("number of locations in route r1", 5, locs.size());
|
|
|
|
RouteLocation rl1 = locs.get(0);
|
|
Assert.assertEquals("rl1 can drop", false, rl1.isDropAllowed());
|
|
Assert.assertEquals("rl1 can pickup", false, rl1.isPickUpAllowed());
|
|
Assert.assertEquals("rl1 car moves", 0, rl1.getCarMoves()); // default
|
|
Assert.assertEquals("rl1 comment", "rl1 comment", rl1.getComment());
|
|
Assert.assertEquals("rl1 grade", "5.0", Double.toString(rl1.getGrade()));
|
|
Assert.assertEquals("rl1 max car moves", 8, rl1.getMaxCarMoves());
|
|
Assert.assertEquals("rl1 max train length", 345, rl1.getMaxTrainLength());
|
|
Assert.assertEquals("rl1 train direction", Location.SOUTH, rl1.getTrainDirection());
|
|
Assert.assertEquals("rl1 IconX", 56, rl1.getTrainIconX());
|
|
Assert.assertEquals("rl1 IconY", 78, rl1.getTrainIconY());
|
|
Assert.assertEquals("rl1 train length", 0, rl1.getTrainLength()); // default
|
|
Assert.assertEquals("rl1 train weight", 0, rl1.getTrainWeight()); // default
|
|
|
|
Assert.assertEquals("r2 comment", "r2 comment", r2.getComment());
|
|
locs = r2.getLocationsBySequenceList();
|
|
Assert.assertEquals("number of locations in route r2", 4, locs.size());
|
|
|
|
RouteLocation rl2 = locs.get(1);
|
|
Assert.assertEquals("rl2 can drop", false, rl2.isDropAllowed());
|
|
Assert.assertEquals("rl2 can pickup", true, rl2.isPickUpAllowed());
|
|
Assert.assertEquals("rl2 car moves", 0, rl2.getCarMoves()); // default
|
|
Assert.assertEquals("rl2 comment", "r2l2 comment", rl2.getComment());
|
|
Assert.assertEquals("rl2 grade", "1.0", Double.toString(rl2.getGrade()));
|
|
Assert.assertEquals("rl2 max car moves", 181, rl2.getMaxCarMoves());
|
|
Assert.assertEquals("rl2 max train length", 4561, rl2.getMaxTrainLength());
|
|
Assert.assertEquals("rl2 train direction", Location.EAST, rl2.getTrainDirection());
|
|
Assert.assertEquals("rl2 IconX", 651, rl2.getTrainIconX());
|
|
Assert.assertEquals("rl2 IconY", 871, rl2.getTrainIconY());
|
|
Assert.assertEquals("rl2 train length", 0, rl2.getTrainLength()); // default
|
|
Assert.assertEquals("rl2 train weight", 0, rl2.getTrainWeight()); // default
|
|
|
|
RouteLocation rl4 = locs.get(3);
|
|
Assert.assertEquals("rl4 can drop", true, rl4.isDropAllowed());
|
|
Assert.assertEquals("rl4 can pickup", false, rl4.isPickUpAllowed());
|
|
Assert.assertEquals("rl4 car moves", 0, rl4.getCarMoves()); // default
|
|
Assert.assertEquals("rl4 comment", "r2l4 comment", rl4.getComment());
|
|
Assert.assertEquals("rl4 grade", "2.0", Double.toString(rl4.getGrade()));
|
|
Assert.assertEquals("rl4 max car moves", 18, rl4.getMaxCarMoves());
|
|
Assert.assertEquals("rl4 max train length", 456, rl4.getMaxTrainLength());
|
|
Assert.assertEquals("rl4 train direction", Location.NORTH, rl4.getTrainDirection());
|
|
Assert.assertEquals("rl4 IconX", 65, rl4.getTrainIconX());
|
|
Assert.assertEquals("rl4 IconY", 87, rl4.getTrainIconY());
|
|
Assert.assertEquals("rl4 train length", 0, rl4.getTrainLength()); // default
|
|
Assert.assertEquals("rl4 train weight", 0, rl4.getTrainWeight()); // default
|
|
|
|
Assert.assertEquals("r3 comment", "r3 comment", r3.getComment());
|
|
Assert.assertEquals("r4 comment", "r4 comment", r4.getComment());
|
|
Assert.assertEquals("r5 comment", "r5 comment", r5.getComment());
|
|
Assert.assertEquals("r6 comment", "r6 comment", r6.getComment());
|
|
|
|
// now test backup file
|
|
manager.dispose();
|
|
// change default file name to backup
|
|
InstanceManager.getDefault(RouteManagerXml.class).setOperationsFileName("OperationsJUnitTestRouteRoster.xml.bak");
|
|
|
|
manager = InstanceManager.getDefault(RouteManager.class);
|
|
temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("Starting Number of Routes", 0, temprouteList.size());
|
|
|
|
InstanceManager.getDefault(RouteManagerXml.class).readFile(InstanceManager.getDefault(RouteManagerXml.class).getDefaultOperationsFilename());
|
|
temprouteList = manager.getRoutesByIdList();
|
|
Assert.assertEquals("Number of Routes", 3, temprouteList.size());
|
|
|
|
r1 = manager.getRouteByName("Test Number 1");
|
|
r2 = manager.getRouteByName("Test Number 2");
|
|
r3 = manager.getRouteByName("Test Number 3");
|
|
r4 = manager.getRouteByName("Test Number 4");
|
|
r5 = manager.getRouteByName("Test Number 5");
|
|
r6 = manager.getRouteByName("Test Number 6");
|
|
|
|
Assert.assertNotNull("route r1 exists", r1);
|
|
Assert.assertNotNull("route r2 exists", r2);
|
|
Assert.assertNotNull("route r3 exists", r3);
|
|
Assert.assertNull("route r4 exists", r4);
|
|
Assert.assertNull("route r5 exists", r5);
|
|
Assert.assertNull("route r6 exists", r6);
|
|
|
|
}
|
|
|
|
// TODO: Add tests for Route location track location
|
|
// TODO: Add test to create xml file
|
|
// TODO: Add test to read xml file
|
|
|
|
}
|