Files
JIMRI/java/test/jmri/implementation/TurnoutSignalMastTest.java
2026-06-17 14:00:51 +02:00

146 lines
5.7 KiB
Java

package jmri.implementation;
import jmri.*;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import org.junit.Assert;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class TurnoutSignalMastTest {
@Test
public void testCTor() {
TurnoutSignalMast t = new TurnoutSignalMast("IF$tsm:basic:one-searchlight($1)");
Assert.assertNotNull("exists",t);
}
@Test
public void testSetAspect() {
Turnout it1 = InstanceManager.turnoutManagerInstance().provideTurnout("IT1");
Turnout it2 = InstanceManager.turnoutManagerInstance().provideTurnout("IT2");
TurnoutSignalMast t = new TurnoutSignalMast("IF$tsm:basic:one-searchlight($1)");
t.resetPreviousStates(false);
t.setTurnout("Stop", "IT1", Turnout.THROWN);
t.setTurnout("Clear", "IT2", Turnout.CLOSED);
t.setAspect("Clear");
Assert.assertEquals("Clear", t.getAspect());
Assert.assertEquals(Turnout.UNKNOWN, it1.getCommandedState()); // not thrown
Assert.assertEquals(Turnout.CLOSED, it2.getCommandedState());
t.setAspect("Stop");
Assert.assertEquals("Stop", t.getAspect());
Assert.assertEquals(Turnout.THROWN, it1.getCommandedState());
Assert.assertEquals(Turnout.CLOSED, it2.getCommandedState()); // unchanged
// try an unconfigured one
t.setAspect("Approach");
jmri.util.JUnitAppender.assertErrorMessage("Trying to set \"Approach\" on signal mast \"IF$tsm:basic:one-searchlight($1)\" which has not been configured");
try {
t.setAspect("Marblesnarb");
} catch (IllegalArgumentException ex) {
jmri.util.JUnitAppender.assertWarnMessage("attempting to set invalid aspect: Marblesnarb on mast: IF$tsm:basic:one-searchlight($1)");
return;
}
Assert.fail("should have thrown");
}
@Test
public void testSetAspectResetOthers() {
Turnout it1 = InstanceManager.turnoutManagerInstance().provideTurnout("IT1");
Turnout it2 = InstanceManager.turnoutManagerInstance().provideTurnout("IT2");
TurnoutSignalMast t = new TurnoutSignalMast("IF$tsm:basic:one-searchlight($1)");
t.resetPreviousStates(true);
t.setTurnout("Stop", "IT1", Turnout.THROWN);
t.setTurnout("Clear", "IT2", Turnout.CLOSED);
t.setAspect("Clear");
Assert.assertEquals("Clear", t.getAspect());
Assert.assertEquals(Turnout.CLOSED, it1.getCommandedState()); // reset
Assert.assertEquals(Turnout.CLOSED, it2.getCommandedState());
t.setAspect("Stop");
Assert.assertEquals("Stop", t.getAspect());
Assert.assertEquals(Turnout.THROWN, it1.getCommandedState());
Assert.assertEquals(Turnout.THROWN, it2.getCommandedState()); // reset
// try an unconfigured but valid one
t.setAspect("Approach");
jmri.util.JUnitAppender.assertErrorMessage("Trying to set \"Approach\" on signal mast \"IF$tsm:basic:one-searchlight($1)\" which has not been configured");
try {
t.setAspect("Marblesnarb");
} catch (IllegalArgumentException ex) {
jmri.util.JUnitAppender.assertWarnMessage("attempting to set invalid aspect: Marblesnarb on mast: IF$tsm:basic:one-searchlight($1)");
return;
}
Assert.fail("should have thrown");
}
@Test
public void testUnLitNoTurnout() {
Turnout it1 = InstanceManager.turnoutManagerInstance().provideTurnout("IT1");
Turnout it2 = InstanceManager.turnoutManagerInstance().provideTurnout("IT2");
TurnoutSignalMast t = new TurnoutSignalMast("IF$tsm:basic:one-searchlight($1)");
t.setTurnout("Stop", "IT1", Turnout.THROWN);
t.setTurnout("Clear", "IT2", Turnout.THROWN);
t.setAspect("Clear");
Assert.assertEquals(true, t.getLit());
t.setLit(false);
Assert.assertEquals(false, t.getLit());
Assert.assertEquals("Clear", t.getAspect());
Assert.assertEquals(Turnout.CLOSED, it1.getCommandedState());
Assert.assertEquals(Turnout.CLOSED, it2.getCommandedState());
}
@Test
public void testUnLitWithTurnout() {
Turnout it1 = InstanceManager.turnoutManagerInstance().provideTurnout("IT1");
Turnout it2 = InstanceManager.turnoutManagerInstance().provideTurnout("IT2");
Turnout it3 = InstanceManager.turnoutManagerInstance().provideTurnout("IT3");
TurnoutSignalMast t = new TurnoutSignalMast("IF$tsm:basic:one-searchlight($1)");
t.setTurnout("Stop", "IT1", Turnout.THROWN);
t.setTurnout("Clear", "IT2", Turnout.THROWN);
t.setTurnout("Unlit", "IT3", Turnout.THROWN);
t.setUnLitTurnout("IT3",Turnout.THROWN );
t.setAspect("Clear");
Assert.assertEquals(true, t.getLit());
Assert.assertEquals(Turnout.UNKNOWN, it1.getCommandedState());
Assert.assertEquals(Turnout.THROWN, it2.getCommandedState());
t.setLit(false);
Assert.assertEquals(false, t.getLit());
Assert.assertEquals("Clear", t.getAspect());
Assert.assertEquals(Turnout.UNKNOWN, it1.getCommandedState()); // Unchanged
Assert.assertEquals(Turnout.THROWN, it2.getCommandedState()); // Unchanged
Assert.assertEquals(Turnout.THROWN, it3.getCommandedState());
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetInstanceManager();
JUnitUtil.initInternalTurnoutManager();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
//private static final Logger log = LoggerFactory.getLogger(TurnoutSignalMastTest.class);
}