180 lines
10 KiB
Java
180 lines
10 KiB
Java
package jmri.jmrit.logix;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.JmriException;
|
|
import jmri.Memory;
|
|
import jmri.Sensor;
|
|
import jmri.SignalHead;
|
|
import jmri.Turnout;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
/**
|
|
* Tests for the OPath class
|
|
*
|
|
* @author Pete Cressman Copyright 2014
|
|
*/
|
|
public class LogixActionTest {
|
|
|
|
@Test
|
|
@DisabledIfSystemProperty(named ="jmri.skipTestsRequiringSeparateRunning", matches ="true")
|
|
public void testLogixAction() throws JmriException {
|
|
jmri.configurexml.ConfigXmlManager cm = new jmri.configurexml.ConfigXmlManager() {
|
|
};
|
|
|
|
// load and display sample file. Panel file does not display screen
|
|
java.io.File f = new java.io.File("java/test/jmri/jmrit/logix/valid/LogixActionTest.xml");
|
|
Assertions.assertTrue(cm.load(f));
|
|
InstanceManager.getDefault(jmri.LogixManager.class).activateAllLogixs();
|
|
|
|
Memory im6 = InstanceManager.memoryManagerInstance().getMemory("IM6");
|
|
assertThat(im6).withFailMessage("Memory IM6").isNotNull();
|
|
assertThat(im6.getValue()).withFailMessage("Contents IM6").isEqualTo("EastToWestOnSiding");
|
|
|
|
// Find Enable Logix button <<< Use GUI, but need Container to find button in
|
|
// JUnitUtil.pressButton(container, "Enable/Disable Tests");
|
|
// OK, do it this way
|
|
Sensor sensor = InstanceManager.sensorManagerInstance().getSensor("enableButton");
|
|
assertThat(sensor).withFailMessage("Sensor IS5").isNotNull();
|
|
sensor.setState(Sensor.ACTIVE);
|
|
sensor.setState(Sensor.INACTIVE);
|
|
sensor.setState(Sensor.ACTIVE);
|
|
SignalHead sh1 = InstanceManager.getDefault(jmri.SignalHeadManager.class).getSignalHead("IH1");
|
|
assertThat(sh1).withFailMessage("shi null").isNotNull();
|
|
assertThat(sh1.getAppearance()).withFailMessage("SignalHead IH1").isEqualTo(SignalHead.RED);
|
|
|
|
// do some buttons -Sensors
|
|
sensor = InstanceManager.sensorManagerInstance().getSensor("ISLITERAL");
|
|
assertThat(sensor).withFailMessage("sensor null").isNotNull();
|
|
sensor.setState(Sensor.ACTIVE); // activate direct logix action
|
|
Sensor is1 = InstanceManager.sensorManagerInstance().getSensor("sensor1");
|
|
assertThat(is1).withFailMessage("is1 null").isNotNull();
|
|
assertThat(is1.getState()).withFailMessage("direct set Sensor IS1 active").isEqualTo(Sensor.ACTIVE); // action
|
|
sensor = InstanceManager.sensorManagerInstance().getSensor("ISINDIRECT");
|
|
assertThat(sensor).withFailMessage("sensor null").isNotNull();
|
|
sensor.setState(Sensor.ACTIVE); // activate Indirect logix action
|
|
assertThat(is1.getState()).withFailMessage("Indirect set Sensor IS1 inactive").isEqualTo(Sensor.INACTIVE); // action
|
|
|
|
// SignalHead buttons
|
|
Sensor is4 = InstanceManager.sensorManagerInstance().getSensor("IS4");
|
|
assertThat(is4).withFailMessage("is4 null").isNotNull();
|
|
is4.setState(Sensor.ACTIVE); // activate direct logix action
|
|
assertThat(sh1.getAppearance()).withFailMessage("direct set SignalHead IH1 to Green").isEqualTo(SignalHead.GREEN);
|
|
is4.setState(Sensor.INACTIVE); // activate direct logix action
|
|
assertThat(sh1.getAppearance()).withFailMessage("direct set SignalHead IH1 to Red").isEqualTo(SignalHead.RED);
|
|
|
|
Memory im3 = InstanceManager.memoryManagerInstance().getMemory("IM3");
|
|
assertThat(im3).withFailMessage("Memory IM3").isNotNull();
|
|
assertThat(im3.getValue()).withFailMessage("Contents IM3").isEqualTo("IH1");
|
|
Sensor is3 = InstanceManager.sensorManagerInstance().getSensor("IS3");
|
|
assertThat(is3).withFailMessage("is3 null").isNotNull();
|
|
is3.setState(Sensor.ACTIVE); // activate indirect logix action
|
|
assertThat(sh1.getAppearance()).withFailMessage("Indirect set SignalHead IH1 to Green").isEqualTo(SignalHead.GREEN);
|
|
is3.setState(Sensor.INACTIVE); // activate indirect logix action
|
|
assertThat(sh1.getAppearance()).withFailMessage("Indirect set SignalHead IH1 to Red").isEqualTo(SignalHead.RED);
|
|
// change memory value
|
|
im3.setValue("IH2");
|
|
is3.setState(Sensor.ACTIVE); // activate logix action
|
|
assertThat(im3.getValue()).withFailMessage("Contents IM3").isEqualTo("IH2");
|
|
SignalHead sh2 = InstanceManager.getDefault(jmri.SignalHeadManager.class).getSignalHead("IH2");
|
|
assertThat(sh2).withFailMessage("sh2 null").isNotNull();
|
|
assertThat(sh2.getAppearance()).withFailMessage("Indirect SignalHead IH2").isEqualTo(SignalHead.GREEN);
|
|
|
|
// Turnout Buttons
|
|
Sensor is6 = InstanceManager.sensorManagerInstance().getSensor("IS6");
|
|
assertThat(is6).withFailMessage("is6 null").isNotNull();
|
|
is6.setState(Sensor.ACTIVE); // activate direct logix action
|
|
Turnout it2 = InstanceManager.turnoutManagerInstance().getTurnout("IT2");
|
|
assertThat(it2).withFailMessage("it2 null").isNotNull();
|
|
assertThat(it2.getState()).withFailMessage("direct set Turnout IT2 to Closed").isEqualTo(Turnout.CLOSED);
|
|
Memory im4 = InstanceManager.memoryManagerInstance().getMemory("IM4");
|
|
assertThat(im4).withFailMessage("im4 null").isNotNull();
|
|
assertThat(im4.getValue()).withFailMessage("Contents IM4").isEqualTo("IT3");
|
|
Sensor is7 = InstanceManager.sensorManagerInstance().getSensor("IS7");
|
|
assertThat(is7).withFailMessage("is7 null").isNotNull();
|
|
is7.setState(Sensor.INACTIVE); // activate indirect logix action
|
|
Turnout it3 = InstanceManager.turnoutManagerInstance().getTurnout("IT3");
|
|
assertThat(it3).withFailMessage("it3 null").isNotNull();
|
|
assertThat(it3.getState()).withFailMessage("Indirect set Turnout IT2 to Thrown").isEqualTo(Turnout.THROWN);
|
|
is7.setState(Sensor.ACTIVE); // activate indirect logix action
|
|
assertThat(it3.getState()).withFailMessage("Indirect set Turnout IT2 to Closed").isEqualTo(Turnout.CLOSED);
|
|
// change memory value
|
|
im4.setValue("IT2");
|
|
assertThat(im4.getValue()).withFailMessage("Contents IM4").isEqualTo("IT2");
|
|
is7.setState(Sensor.INACTIVE); // activate indirect logix action
|
|
assertThat(it2.getState()).withFailMessage("Indirect set Turnout IT2 to Thrown").isEqualTo(Turnout.THROWN);
|
|
is7.setState(Sensor.ACTIVE); // activate indirect logix action
|
|
assertThat(it2.getState()).withFailMessage("Indirect set Turnout IT2 to Closed").isEqualTo(Turnout.CLOSED);
|
|
|
|
// OBlock Buttons
|
|
OBlock ob1 = InstanceManager.getDefault(OBlockManager.class).getOBlock("Left");
|
|
assertThat(ob1.getState()).withFailMessage("OBlock OB1").isEqualTo((OBlock.OUT_OF_SERVICE | Sensor.INACTIVE));
|
|
OBlock ob2 = InstanceManager.getDefault(OBlockManager.class).getOBlock("Right");
|
|
assertThat(ob2.getState()).withFailMessage("OBlock OB2").isEqualTo((OBlock.TRACK_ERROR | Sensor.INACTIVE));
|
|
Sensor is8 = InstanceManager.sensorManagerInstance().getSensor("IS8");
|
|
assertThat(is8).withFailMessage("is8 null").isNotNull();
|
|
is8.setState(Sensor.ACTIVE); // direct action
|
|
assertThat(ob1.getState()).withFailMessage("Direct set OBlock OB1 to normal").isEqualTo(Sensor.INACTIVE);
|
|
is8.setState(Sensor.INACTIVE); // direct action
|
|
assertThat(ob1.getState()).withFailMessage("Direct set OBlock OB1 to OOS").isEqualTo((OBlock.OUT_OF_SERVICE | Sensor.INACTIVE));
|
|
Sensor is9 = InstanceManager.sensorManagerInstance().getSensor("IS9");
|
|
assertThat(is9).withFailMessage("is9 null").isNotNull();
|
|
is9.setState(Sensor.ACTIVE); // indirect action
|
|
assertThat(ob2.getState()).withFailMessage("Indirect set OBlock OB2 to normal").isEqualTo(Sensor.INACTIVE);
|
|
// change memory value
|
|
Memory im5 = InstanceManager.memoryManagerInstance().getMemory("IM5");
|
|
assertThat(im5).withFailMessage("im5 null").isNotNull();
|
|
im5.setValue("OB1");
|
|
is9.setState(Sensor.INACTIVE); // indirect action
|
|
assertThat(ob1.getState()).withFailMessage("Indirect set OBlock OB1 to normal").isEqualTo((OBlock.TRACK_ERROR | OBlock.OUT_OF_SERVICE | Sensor.INACTIVE));
|
|
is9.setState(Sensor.ACTIVE); // indirect action
|
|
is8.setState(Sensor.ACTIVE); // indirect action
|
|
assertThat(ob1.getState()).withFailMessage("Direct set OBlock OB1 to normal").isEqualTo(Sensor.INACTIVE);
|
|
|
|
// Warrant buttons
|
|
Sensor is14 = InstanceManager.sensorManagerInstance().getSensor("IS14");
|
|
assertThat(is14).withFailMessage("is14 null").isNotNull();
|
|
is14.setState(Sensor.ACTIVE); // indirect action
|
|
Warrant w = InstanceManager.getDefault(WarrantManager.class).getWarrant("EastToWestOnSiding");
|
|
assertThat(w.isAllocated()).withFailMessage("warrant EastToWestOnSiding allocated").isTrue();
|
|
Sensor is15 = InstanceManager.sensorManagerInstance().getSensor("IS15");
|
|
assertThat(is15).withFailMessage("is15 null").isNotNull();
|
|
is15.setState(Sensor.ACTIVE); // indirect action
|
|
Assertions.assertFalse( w.isAllocated(), "warrant EastToWestOnSiding deallocated");
|
|
// change memory value
|
|
im6.setValue("WestToEastOnMain");
|
|
is14.setState(Sensor.INACTIVE); // toggle
|
|
is14.setState(Sensor.ACTIVE); // indirect action
|
|
Warrant w2 = InstanceManager.getDefault(WarrantManager.class).getWarrant("WestToEastOnMain");
|
|
assertThat(w2.isAllocated()).withFailMessage("warrant WestToEastOnMain allocated").isTrue();
|
|
im6.setValue("LeftToRightOnPath");
|
|
is14.setState(Sensor.INACTIVE); // toggle
|
|
is14.setState(Sensor.ACTIVE); // indirect action
|
|
w = InstanceManager.getDefault(WarrantManager.class).getWarrant("LeftToRightOnPath");
|
|
assertThat(w.isAllocated()).withFailMessage("warrant LeftToRightOnPath allocated").isTrue();
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initConfigureManager();
|
|
|
|
JUnitUtil.initLogixManager();
|
|
JUnitUtil.initConditionalManager();
|
|
WarrantPreferences.getDefault().setShutdown(WarrantPreferences.Shutdown.NO_MERGE);
|
|
JUnitUtil.initWarrantManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
InstanceManager.getDefault(WarrantManager.class).dispose();
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
}
|