202 lines
9.5 KiB
Java
202 lines
9.5 KiB
Java
package jmri.jmrit.display;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
import jmri.ConfigureManager;
|
|
import jmri.InstanceManager;
|
|
import jmri.NamedBeanHandleManager;
|
|
import jmri.Sensor;
|
|
import jmri.SignalMast;
|
|
import jmri.Turnout;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.junit.annotations.DisabledIfHeadless;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Test signal system via a specific layout file
|
|
*
|
|
* This is in jmri.jmrit.display instead of jmri.implementation because the
|
|
* files it loads display the signals for debugging purposes; if their panels
|
|
* were editted out, jmri.implementation would be a better location
|
|
*
|
|
* @author Bob Jacobsen Copyright 2016
|
|
* @since 4.3.2
|
|
*/
|
|
public class SignalSystemTest {
|
|
|
|
@Test
|
|
@DisabledIfHeadless
|
|
public void testLoadSimplePanelOBlocksDB1969() throws jmri.JmriException {
|
|
|
|
// load file
|
|
Assertions.assertTrue(InstanceManager.getDefault(ConfigureManager.class)
|
|
.load(new java.io.File("java/test/jmri/jmrit/display/valid/SimplePanel_OBlocks-DB1969.xml")));
|
|
|
|
InstanceManager.getDefault(jmri.LogixManager.class).activateAllLogixs();
|
|
InstanceManager.getDefault(jmri.jmrit.display.layoutEditor.LayoutBlockManager.class).initializeLayoutBlockPaths();
|
|
|
|
// check aspects
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0002)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0003)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0009)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0010)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0004)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0007)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0011)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0005)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0006)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0008)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:shunting_dwarf($0012)", "Sh0");
|
|
|
|
Turnout it201 = InstanceManager.turnoutManagerInstance().getTurnout("IT201");
|
|
assertNotNull(it201);
|
|
it201.setCommandedState(Turnout.CLOSED);
|
|
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0002)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0003)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0009)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0010)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0004)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0007)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0011)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0005)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0006)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0008)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:shunting_dwarf($0012)", "Sh0");
|
|
|
|
Sensor is101 = InstanceManager.sensorManagerInstance().getSensor("IS101");
|
|
assertNotNull(is101);
|
|
is101.setState(Sensor.ACTIVE);
|
|
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0002)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0003)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0009)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0010)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0004)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0007)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0011)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0005)", "Hp00");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0006)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0008)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:shunting_dwarf($0012)", "Sh0");
|
|
|
|
Sensor is102 = InstanceManager.sensorManagerInstance().getSensor("IS102");
|
|
assertNotNull(is102);
|
|
is102.setState(Sensor.ACTIVE);
|
|
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0002)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0003)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0009)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:block_distant($0010)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0004)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0007)", "Hp1+Vr1");
|
|
checkAspect("IF$vsm:DB-HV-1969:entry_distant($0011)", "Hp0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0005)", "Hp00");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0006)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:exit_distant($0008)", "Hp1+Vr0");
|
|
checkAspect("IF$vsm:DB-HV-1969:shunting_dwarf($0012)", "Sh0");
|
|
|
|
EditorFrameOperator efo = new EditorFrameOperator("DB1969 Control Panel Editor");
|
|
efo.closeFrameWithConfirmations();
|
|
EditorFrameOperator.clearEditorFrameOperatorThreads();
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisabledIfHeadless
|
|
public void testLoadAA1UPtest() throws jmri.JmriException {
|
|
|
|
// load file
|
|
InstanceManager.getDefault(jmri.jmrit.display.layoutEditor.LayoutBlockManager.class).setStabilisedSensor("IS_ROUTING_DONE");
|
|
|
|
Assertions.assertTrue(InstanceManager.getDefault(ConfigureManager.class)
|
|
.load(new java.io.File("java/test/jmri/jmrit/display/valid/AA1UPtest.xml")));
|
|
|
|
InstanceManager.getDefault(jmri.LogixManager.class).activateAllLogixs();
|
|
InstanceManager.getDefault(jmri.jmrit.display.layoutEditor.LayoutBlockManager.class).initializeLayoutBlockPaths();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return InstanceManager.sensorManagerInstance().provideSensor("IS_ROUTING_DONE").getKnownState() == jmri.Sensor.ACTIVE;
|
|
}, "LayoutEditor stabilized sensor went ACTIVE");
|
|
|
|
// check aspects
|
|
checkAspect("IF$vsm:BNSF-1996:SE-1A($0152)", "Stop"); // not on visual panel
|
|
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0170)", "Advance Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0171)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0172)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0173)", "Restricting");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0174)", "Advance Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0176)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0178)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0179)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0181)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0183)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0185)", "Advance Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0186)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0230)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0231)", "Advance Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0232)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0233)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0234)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0235)", "Restricting");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0236)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0237)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0238)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0239)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0240)", "Clear");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0241)", "Restricting");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0242)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0243)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0244)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0245)", "Approach");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0246)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0247)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3A($0248)", "Stop");
|
|
checkAspect("IF$vsm:UP-2008:SL-3L2($0249)", "Approach Restricting");
|
|
checkAspect("IF$vsm:UP-2008:SL-3L2($0250)", "Approach");
|
|
|
|
final int numErrorMessages = 19;
|
|
// clean up messages from file
|
|
for (int i=0; i < numErrorMessages; i++) {
|
|
jmri.util.JUnitAppender.assertErrorMessageStartsWith("No facing block found for source mast IF$vsm:BNSF-1996:SL-");
|
|
}
|
|
|
|
EditorFrameOperator efo = new EditorFrameOperator("AA1UPtest Layout");
|
|
efo.closeFrameWithConfirmations();
|
|
EditorFrameOperator.clearEditorFrameOperatorThreads();
|
|
}
|
|
|
|
void checkAspect(String mastName, String aspect) {
|
|
SignalMast mast = InstanceManager.getDefault(jmri.SignalMastManager.class).getSignalMast(mastName);
|
|
assertNotNull(mast, "Mast " + mastName + " not found");
|
|
|
|
// wait present or error
|
|
JUnitUtil.waitFor(() -> {
|
|
return aspect.equals(mast.getAspect());
|
|
},
|
|
() -> "mast " + mastName + "currently showing \"" + mast.getAspect() + "\", expected aspect \"" + aspect + "\"," );
|
|
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initConfigureManager();
|
|
InstanceManager.store(new NamedBeanHandleManager(), NamedBeanHandleManager.class);
|
|
JUnitUtil.initInternalTurnoutManager();
|
|
JUnitUtil.initInternalLightManager();
|
|
JUnitUtil.initInternalSensorManager();
|
|
JUnitUtil.initMemoryManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|