def testSetAfter(self): clock = task.Clock() m = StateMachine(None, reactor=clock) m.setAfter("foo", 1.0) self.assertEquals(None, m.get) clock.advance(1.0) self.assertEquals("foo", m.get)
def testEventsStateChangeAfter(self): clock = task.Clock() received = [] m = StateMachine(None, reactor=clock) m.events.addObserver("state-change-after", lambda state, after: received.append((state,after))) m.setAfter("foo", 1.1) self.assertEquals([("foo", 1.1)], received)
def testDynamicArguments(self): self.called = [] self.args = [] class Listener: def enter_a(s, *a): self.called.append("enter_a"); self.args += a m = StateMachine(Listener()) m.set("a", 12) self.assertEquals(self.called, ["enter_a"]) self.assertEquals(self.args, [12]) m.set("a", 13) self.assertEquals(self.called, ["enter_a", "enter_a"]) self.assertEquals(self.args, [12,13])
def testExtraListenerWithDynamicAndPredefinedArguments(self): self.called = [] self.args = [] class Listener: post="" def enter_a(s, *a): self.called.append("enter_a"+s.post); self.args += a m = StateMachine(Listener()) l2 = Listener() l2.post = "2" m.addListener(l2, "foo", "bar", 1234) m.set("a", "meh") self.assertEquals(self.called, ["enter_a", "enter_a2"]) self.assertEquals(self.args, ["meh", "foo", "bar", 1234, "meh" ])
def testEventsStateAfter(self): m = StateMachine(None) received = [] m.events.addObserver("state-change", lambda old, new: received.append((old,new))) m.set("foo") self.assertEquals([(None, "foo")], received) m.set("bar") self.assertEquals([(None, "foo"), ("foo", "bar")], received) m.set("baz") self.assertEquals([(None, "foo"), ("foo", "bar"), ("bar", "baz")], received)
def testEventsBumpAfter(self): clock = task.Clock() received = [] m = StateMachine(None, reactor=clock) m.events.addObserver("bump-after", lambda after: received.append(after)) m.setAfter("foo", 1.1) clock.advance(0.5) m.bumpAfter() self.assertEquals([1.1], received) m.bumpAfter(2) self.assertEquals([1.1, 2], received)
def testCallbacks(self): self.called = [] class Listener: def enter_a(s): self.called.append("enter_a") def exit_a(s): self.called.append("exit_a") def enter_b(s): self.called.append("enter_b") def exit_b(s): self.called.append("exit_b") m = StateMachine(Listener()) m.set("a") self.assertEquals(self.called, ["enter_a"]) m.set("a") self.assertEquals(self.called, ["enter_a", "exit_a", "enter_a"]) m.set("b") self.assertEquals(self.called, ["enter_a", "exit_a", "enter_a", "exit_a", "enter_b"]) m.set("a") self.assertEquals(self.called, ["enter_a", "exit_a", "enter_a", "exit_a", "enter_b", "exit_b", "enter_a"])
def testExtraListener(self): self.called = [] class Listener: post="" def enter_a(s): self.called.append("enter_a"+s.post) def exit_a(s): self.called.append("exit_a"+s.post) def enter_b(s): self.called.append("enter_b"+s.post) def exit_b(s): self.called.append("exit_b"+s.post) m = StateMachine(Listener()) l2 = Listener() l2.post = "2" m.addListener(l2) m.set("a") self.assertEquals(self.called, ["enter_a", "enter_a2"]) m.set("b") self.assertEquals(self.called, ["enter_a", "enter_a2", "exit_a2", "exit_a", "enter_b", "enter_b2"])
def testGetSet(self): m = StateMachine(None) m.set("foo") self.assertEquals("foo", m.get)