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

195 lines
11 KiB
Java

package jmri.jmrit.operations.locations;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import jmri.InstanceManager;
import jmri.Reporter;
import jmri.implementation.decorators.TimeoutReporter;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.locations.divisions.Division;
import jmri.jmrit.operations.rollingstock.cars.CarLoad;
import jmri.jmrit.operations.trains.Train;
import jmri.jmrit.operations.trains.TrainManager;
import jmri.util.JUnitOperationsUtil;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class LocationManagerTest extends OperationsTestCase {
@Test
public void testCTor() {
LocationManager t = new LocationManager();
Assert.assertNotNull("exists", t);
}
@Test
public void testHasWork() {
JUnitOperationsUtil.initOperationsData();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Assert.assertNotNull("exists", lm);
Assert.assertFalse(lm.hasWork());
Train train1 = InstanceManager.getDefault(TrainManager.class).getTrainByName("STF");
Assert.assertNotNull("train exists", train1);
Assert.assertTrue(train1.build());
Assert.assertTrue(lm.hasWork());
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testReplaceShipLoadNames() {
JUnitOperationsUtil.createTwoStagingLocations();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Assert.assertNotNull("exists", lm);
Location northEndStaging = lm.getLocationByName("North End Staging");
Assert.assertNotNull("exists", northEndStaging);
Track staging = northEndStaging.getTrackByName("North End 1", null);
Assert.assertNotNull("exists", staging);
staging.addShipLoadName("Boxes");
staging.addShipLoadName("Boxcar" + CarLoad.SPLIT_CHAR + "Paper");
staging.addShipLoadName("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts");
staging.setShipLoadOption(Track.INCLUDE_LOADS);
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("boxes"));
lm.replaceLoad("Boxcar", "Boxes", "boxes");
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "Paper", "tissue");
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "boxes", null);
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("boxcar", "Nuts", null);
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "Nuts", null);
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxes"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertFalse("load is not accepted", staging.isLoadNameShipped("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
}
@Test
public void testReplaceLoadNames() {
JUnitOperationsUtil.createSevenNormalLocations();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Assert.assertNotNull("exists", lm);
Location boston = lm.getLocationByName("Boston");
Assert.assertNotNull("exists", boston);
Track spur = boston.getTrackByName("Boston Spur 1", null);
Assert.assertNotNull("exists", spur);
spur.addLoadName("Boxes");
spur.addLoadName("Boxcar" + CarLoad.SPLIT_CHAR + "Paper");
spur.addLoadName("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts");
spur.setLoadOption(Track.INCLUDE_LOADS);
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("boxes"));
lm.replaceLoad("Boxcar", "Boxes", "boxes");
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "Paper", "tissue");
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "boxes", null);
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("boxcar", "Nuts", null);
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
lm.replaceLoad("Boxcar", "Nuts", null);
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxes"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Paper"));
Assert.assertTrue("load is accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "tissue"));
Assert.assertFalse("load is not accepted", spur.isLoadNameAccepted("Boxcar" + CarLoad.SPLIT_CHAR + "Nuts"));
}
@Test
public void testHasReporters() {
JUnitOperationsUtil.initOperationsData();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Assert.assertNotNull("exists", lm);
Assert.assertFalse(lm.hasReporters());
}
@Test
public void testHasDivisions() {
JUnitOperationsUtil.createSevenNormalLocations();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Assert.assertNotNull("exists", lm);
Location boston = lm.getLocationByName("Boston");
Assert.assertNotNull("exists", boston);
Assert.assertFalse(lm.hasDivisions());
boston.setDivision(new Division("testId", "testName"));
Assert.assertTrue(lm.hasDivisions());
}
@Test
void getTrackByReporter() {
JUnitOperationsUtil.initOperationsData();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Reporter baseReporter= Mockito.mock(Reporter.class);
Mockito.when(baseReporter.getSystemName()).thenReturn("foo");
TimeoutReporter timeoutReporter = new TimeoutReporter(baseReporter);
Location expectedLocation = lm.getLocationByName("North Industries");
Track expected = expectedLocation.getTracksList().get(0);
expected.setReporter(timeoutReporter);
Assert.assertEquals(expected,lm.getTrackByReporter(timeoutReporter));
Assert.assertEquals(expected,lm.getTrackByReporter(baseReporter));
}
@Test
void getLocationByReporter() {
JUnitOperationsUtil.initOperationsData();
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
Reporter baseReporter= Mockito.mock(Reporter.class);
Mockito.when(baseReporter.getSystemName()).thenReturn("foo");
Location expected = lm.getLocationByName("North Industries");
TimeoutReporter timeoutReporter = new TimeoutReporter(baseReporter);
expected.setReporter(timeoutReporter);
Assert.assertEquals(expected,lm.getLocationByReporter(timeoutReporter));
Assert.assertEquals(expected,lm.getLocationByReporter(baseReporter));
}
}