177 lines
7.2 KiB
Java
177 lines
7.2 KiB
Java
package jmri.jmrit.logix;
|
|
|
|
import jmri.ConfigureManager;
|
|
import jmri.InstanceManager;
|
|
import jmri.JmriException;
|
|
import jmri.Sensor;
|
|
import jmri.SensorManager;
|
|
import jmri.jmrit.display.controlPanelEditor.ControlPanelEditor;
|
|
import jmri.util.JUnitAppender;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import java.io.File;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
import org.junit.jupiter.api.io.TempDir;
|
|
|
|
import org.netbeans.jemmy.operators.JFrameOperator;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
/**
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
public class PortalManagerTest {
|
|
|
|
private PortalManager _portalMgr;
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
assertNotNull( _portalMgr, "exists");
|
|
}
|
|
|
|
@Test
|
|
public void testCreatandGetPortal() {
|
|
// the is was originally part of Warrant test, but none of the asserts
|
|
// are testing anything in the warrant.
|
|
OBlockManager _OBlockMgr = InstanceManager.getDefault(OBlockManager.class);
|
|
OBlock bWest = _OBlockMgr.createNewOBlock("OB1", "West");
|
|
OBlock bNorth = _OBlockMgr.createNewOBlock("OB3", "North");
|
|
OBlock bSouth = _OBlockMgr.createNewOBlock("OB4", "South");
|
|
|
|
Portal pNorthWest = _portalMgr.createNewPortal("NorthWest");
|
|
pNorthWest.setToBlock(bWest, false);
|
|
pNorthWest.setFromBlock(bNorth, false);
|
|
Portal pSouthWest = _portalMgr.createNewPortal("SouthWest");
|
|
pSouthWest.setToBlock(bWest, false);
|
|
pSouthWest.setFromBlock(bSouth, false);
|
|
assertEquals( pNorthWest, _portalMgr.getPortal("NorthWest"), "Portal");
|
|
assertEquals( bSouth, _portalMgr.getPortal("SouthWest").getFromBlock(), "Portal Block");
|
|
assertNotNull(bSouth);
|
|
assertEquals( pSouthWest, bSouth.getPortalByName("SouthWest"), "Portal");
|
|
assertEquals( "West", _portalMgr.getPortal("NorthWest").getToBlockName(), "Portal Block");
|
|
assertEquals( "North", _portalMgr.getPortal("NorthWest").getFromBlockName(), "Portal Block");
|
|
|
|
Portal pNorthEast = _portalMgr.createNewPortal("NorthEast");
|
|
pNorthEast.setToBlock(_OBlockMgr.getOBlock("OB2"), false);
|
|
pNorthEast.setFromBlock(_OBlockMgr.getOBlock("North"), false);
|
|
Portal pSouthEast = _portalMgr.createNewPortal("SouthEast");
|
|
OBlock east = _OBlockMgr.getOBlock("OB2");
|
|
pSouthEast.setToBlock(east, false);
|
|
pSouthEast.setFromBlock(_OBlockMgr.getOBlock("South"), false);
|
|
|
|
assertEquals( east, _portalMgr.getPortal("SouthEast").getToBlock(), "Portal Block");
|
|
assertEquals( "West", _portalMgr.getPortal("NorthWest").getToBlockName(), "Portal Block");
|
|
assertEquals( _OBlockMgr.getOBlock("South"), _portalMgr.getPortal("SouthWest").getFromBlock(), "Portal Block");
|
|
}
|
|
|
|
@Test
|
|
@jmri.util.junit.annotations.DisabledIfHeadless
|
|
@DisabledIfSystemProperty(named ="jmri.skipTestsRequiringSeparateRunning", matches ="true")
|
|
public void testChangeNames() throws JmriException {
|
|
// load and display
|
|
File f = new File("java/test/jmri/jmrit/logix/valid/ShortBlocksTest.xml");
|
|
assertTrue(InstanceManager.getDefault(ConfigureManager.class).load(f));
|
|
JUnitAppender.suppressErrorMessage("Portal elem = null");
|
|
|
|
ControlPanelEditor panel = (ControlPanelEditor) jmri.util.JmriJFrame.getFrame("LinkedWarrantsTest");
|
|
|
|
WarrantTableFrame tableFrame = WarrantTableFrame.getDefault();
|
|
assertNotNull( tableFrame, "tableFrame");
|
|
|
|
Warrant warrant = InstanceManager.getDefault(WarrantManager.class).getWarrant("WestToEast");
|
|
assertNotNull( warrant, "warrant");
|
|
BlockOrder order = warrant.getBlockOrders().get(3);
|
|
OBlock blockOB6 = order.getBlock();
|
|
Portal portal = _portalMgr.getPortal("MidWestToMiddle");
|
|
OPath path = order.getPath();
|
|
// names as loaded
|
|
assertEquals( "Middle", blockOB6.getUserName(), "Block Name");
|
|
assertEquals( "MidWestToMiddle", order.getEntryName(), "Entry Portal Name");
|
|
assertEquals( "MainMidShort", order.getPathName(), "MainMidShort");
|
|
assertEquals( "MainMidShort", path.getName(), "Path Name from path");
|
|
|
|
// change names
|
|
blockOB6.setUserName("AnotherBlock");
|
|
portal.setName("AnotherPortal");
|
|
assertEquals( "AnotherBlock", blockOB6.getUserName(), "Block Name");
|
|
assertEquals( "AnotherPortal", order.getEntryName(), "Entry Portal Name");
|
|
path.setName("AnotherPath");
|
|
assertEquals( "AnotherPath", order.getPathName(), "Path Name");
|
|
assertEquals( "AnotherPath", path.getName(), "Path Name from path");
|
|
|
|
// Run the warrant to prove name changes hold
|
|
OBlockManager _OBlockMgr = InstanceManager.getDefault(OBlockManager.class);
|
|
Sensor sensor1 = InstanceManager.getDefault(SensorManager.class).getBySystemName("IS1");
|
|
NXFrameTest.setAndConfirmSensorAction(sensor1, Sensor.ACTIVE, _OBlockMgr.getBySystemName("OB1"));
|
|
// WarrantTable.runTrain() returns a string that is not null if the
|
|
// warrant can't be started
|
|
assertNull(tableFrame.runTrain(warrant, Warrant.MODE_RUN), "Warrant starts"); // start run
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
String m = warrant.getRunningMessage();
|
|
return m.endsWith("Cmd #8.");
|
|
}, "Train starts to move at 8th command");
|
|
|
|
// OBlock of route
|
|
String[] route1 = {"OB1", "OB3", "OB5", "OB6", "OB7", "OB9", "OB11"};
|
|
OBlock block = _OBlockMgr.getOBlock("OB11");
|
|
assertNotNull(block);
|
|
|
|
Sensor s = block.getSensor();
|
|
assertNotNull(s);
|
|
|
|
// Run the train, then checks end location
|
|
assertEquals( s.getDisplayName(),
|
|
NXFrameTest.runtimes(route1, _OBlockMgr).getDisplayName(),
|
|
"Fred made it to block OB11");
|
|
|
|
// passed test - cleanup.
|
|
warrant.dispose();
|
|
JFrameOperator jfo = new JFrameOperator(tableFrame);
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
assertNotNull(panel);
|
|
|
|
// disposing this way allows test to be rerun (i.e. reload panel file) multiple times
|
|
Boolean retVal = jmri.util.ThreadingUtil.runOnGUIwithReturn(() -> {
|
|
panel.dispose();
|
|
return true;
|
|
});
|
|
assertTrue(retVal);
|
|
|
|
JUnitUtil.waitThreadTerminated("WestToEast Killer");
|
|
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp(@TempDir File folder) {
|
|
JUnitUtil.setUp();
|
|
assertDoesNotThrow( () ->
|
|
JUnitUtil.resetProfileManager(new jmri.profile.NullProfile(folder)));
|
|
|
|
JUnitUtil.initConfigureManager();
|
|
JUnitUtil.initInternalTurnoutManager();
|
|
JUnitUtil.initInternalSensorManager();
|
|
JUnitUtil.initDebugPowerManager();
|
|
JUnitUtil.initOBlockManager();
|
|
WarrantPreferences.getDefault().setShutdown(WarrantPreferences.Shutdown.NO_MERGE);
|
|
JUnitUtil.initWarrantManager();
|
|
JUnitUtil.initDebugThrottleManager();
|
|
|
|
_portalMgr = InstanceManager.getDefault(PortalManager.class);
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.removeMatchingThreads("Engineer(");
|
|
_portalMgr = null;
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(PortalManagerTest.class);
|
|
|
|
}
|