Files
JIMRI/jython/test/CombineTurnoutsTest.py
2026-06-17 14:00:51 +02:00

73 lines
3.0 KiB
Python

# Test the CombineTurnouts.py script
import jmri
# create special turnouts that can have their KnownState directly changed
class TestTurnout(jmri.implementation.AbstractTurnout) :
def forwardCommandChangeToLayout(self, s) :
return
def turnoutPushbuttonLockout(self, b) :
return
def setTestKnownState(self, state) :
self.newKnownState(state)
follower1 = TestTurnout("IT101")
follower1.setUserName("follower1")
jmri.InstanceManager.getDefault(jmri.TurnoutManager).register(follower1)
follower2 = TestTurnout("IT102")
follower2.setUserName("follower2")
jmri.InstanceManager.getDefault(jmri.TurnoutManager).register(follower2)
master = turnouts.provideTurnout("IT10000")
master.setUserName("master")
master.setCommandedState(THROWN)
# confirm test implementation
follower1.setTestKnownState(INCONSISTENT)
if (follower1.getKnownState() != INCONSISTENT) : raise AssertionError('follower1 known state not changed')
# prep initial state for tests
follower1.setCommandedState(CLOSED)
follower2.setCommandedState(CLOSED)
# start actual test
execfile("jython/CombineTurnouts.py")
CombineTurnouts().set("IT10000",["IT101", "IT102"])
if (follower1.getCommandedState() != THROWN) : raise AssertionError('Initial state not set into follower1')
if (follower2.getCommandedState() != THROWN) : raise AssertionError('Initial state not set into follower2')
master.setCommandedState(CLOSED)
if (follower1.getCommandedState() != CLOSED) : raise AssertionError('follower1 didnt follow CLOSED')
if (follower2.getCommandedState() != CLOSED) : raise AssertionError('follower2 didnt follow CLOSED')
master.setCommandedState(THROWN)
if (follower1.getCommandedState() != THROWN) : raise AssertionError('follower1 didnt follow THROWN')
if (follower2.getCommandedState() != THROWN) : raise AssertionError('follower2 didnt follow THROWN')
master.setCommandedState(CLOSED)
if (follower1.getCommandedState() != CLOSED) : raise AssertionError('follower1 didnt follow 2nd CLOSED')
if (follower2.getCommandedState() != CLOSED) : raise AssertionError('follower2 didnt follow 2nd CLOSED')
follower1.setTestKnownState(INCONSISTENT)
if (master.getKnownState() != INCONSISTENT) : raise AssertionError('master didnt follow follower1 INCONSISTENT')
follower1.setTestKnownState(CLOSED)
if (master.getKnownState() != CLOSED) : raise AssertionError('master didnt follow follower1 CLOSED after INCONSISTENT')
follower1.setTestKnownState(THROWN)
follower2.setTestKnownState(THROWN)
if (master.getKnownState() != THROWN) : raise AssertionError('master didnt follow THROWN, THROWN')
follower2.setTestKnownState(UNKNOWN)
if (master.getKnownState() != UNKNOWN) : raise AssertionError('master didnt follow follower2 UNKNOWN')
follower1.setTestKnownState(CLOSED)
follower2.setTestKnownState(CLOSED)
if (master.getKnownState() != CLOSED) : raise AssertionError('master didnt follow CLOSED, CLOSED')
follower1.setTestKnownState(CLOSED)
follower2.setTestKnownState(THROWN)
if (master.getKnownState() != INCONSISTENT) : raise AssertionError('master didnt follow CLOSED, THROWN')