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> list = new ArrayList<>(); RouteLock lock = new RouteLock(list); Assert.assertTrue(lock.isLockClear(Lock.turnoutLockLogger)); } @Test public void testOneInListPass() throws JmriException { ArrayList> list = new ArrayList<>(); SignalHead s = new jmri.implementation.VirtualSignalHead("IH1"); InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s); NamedBeanHandle 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> list = new ArrayList<>(); SignalHead s = new jmri.implementation.VirtualSignalHead("IH1"); InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s); NamedBeanHandle 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> list = new ArrayList<>(); SignalHead s = new jmri.implementation.VirtualSignalHead("IH1"); InstanceManager.getDefault(jmri.SignalHeadManager.class).register(s); NamedBeanHandle 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(); } }