Files
2026-06-17 14:00:51 +02:00

153 lines
4.9 KiB
Java

package jmri.jmrit.ussctc;
import java.util.*;
import jmri.*;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Tests for RouteLock class in the jmri.jmrit.ussctc package
*
* @author Bob Jacobsen Copyright 2007
*/
public class RouteLockTest {
@Test
public void testEmpty() {
ArrayList<NamedBeanHandle<SignalHead>> list = new ArrayList<>();
RouteLock lock = new RouteLock(list);
Assert.assertTrue(lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testOneInListPass() throws JmriException {
ArrayList<NamedBeanHandle<SignalHead>> list = new ArrayList<>();
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
NamedBeanHandle<SignalHead> h = InstanceManager.getDefault(NamedBeanHandleManager.class).getNamedBeanHandle("IH1", s);
list.add(h);
s.setState(SignalHead.RED);
RouteLock lock = new RouteLock(list);
Assert.assertTrue(lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testOneFailActive() throws JmriException {
ArrayList<NamedBeanHandle<SignalHead>> list = new ArrayList<>();
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
NamedBeanHandle<SignalHead> h = InstanceManager.getDefault(NamedBeanHandleManager.class).getNamedBeanHandle("IH1", s);
list.add(h);
s.setState(SignalHead.YELLOW);
RouteLock lock = new RouteLock(list);
Assert.assertTrue( ! lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testOneFailStringArrayCtor() throws JmriException {
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
s.setState(SignalHead.YELLOW);
RouteLock lock = new RouteLock(new String[]{"IH1"});
Assert.assertTrue( ! lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testOneFailSingleStringCtor() throws JmriException {
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
s.setState(SignalHead.YELLOW);
RouteLock lock = new RouteLock("IH1");
Assert.assertTrue( ! lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testSecondFailActive() throws JmriException {
ArrayList<NamedBeanHandle<SignalHead>> list = new ArrayList<>();
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
NamedBeanHandle<SignalHead> h = InstanceManager.getDefault(NamedBeanHandleManager.class).getNamedBeanHandle("IH1", s);
list.add(h);
s.setState(SignalHead.RED);
s = new jmri.implementation.VirtualSignalHead("IH2");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
h = InstanceManager.getDefault(NamedBeanHandleManager.class).getNamedBeanHandle("IH2", s);
list.add(h);
s.setState(SignalHead.YELLOW);
RouteLock lock = new RouteLock(list);
Assert.assertTrue( ! lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testBeanSettingMatch() throws JmriException {
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
Turnout t = InstanceManager.getDefault(TurnoutManager.class).provideTurnout("IT1");
t.setCommandedState(Turnout.CLOSED);
s.setState(SignalHead.YELLOW);
BeanSetting b = new BeanSetting(t, Turnout.CLOSED);
RouteLock lock = new RouteLock(new String[]{"IH1"}, new BeanSetting[]{b});
Assert.assertTrue( ! lock.isLockClear(Lock.turnoutLockLogger));
}
@Test
public void testBeanSettingoMatch() throws JmriException {
SignalHead s = new jmri.implementation.VirtualSignalHead("IH1");
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s);
Turnout t = InstanceManager.getDefault(TurnoutManager.class).provideTurnout("IT1");
t.setCommandedState(Turnout.CLOSED);
s.setState(SignalHead.YELLOW);
BeanSetting b = new BeanSetting(t, Turnout.THROWN);
RouteLock lock = new RouteLock(new String[]{"IH1"}, new BeanSetting[]{b});
Assert.assertTrue( lock.isLockClear(Lock.turnoutLockLogger));
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetProfileManager();
JUnitUtil.initConfigureManager();
JUnitUtil.initInternalSignalHeadManager();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}