def test_can(self):
        sm = StateMachine({
            'initial': 'init',
            'transitions': {
                ('init', 'foo'): lambda: True,
                ('foo', 'bar'): lambda: True,
                ('bar', 'foo'): lambda: True,
                ('bar', 'init'): lambda: True,
                ('bar', 'bar'): lambda: True
            }
        })

        self.assertEqual(sm.state, None)
        self.assertIs(sm.can('init'), True)
        self.assertIs(sm.can('foo'), False)
        self.assertIs(sm.can('bar'), False)
        self.assertIs(sm.can(None), False)

        sm.process()
        self.assertEqual(sm.state, 'init')
        self.assertIs(sm.can('foo'), True)
        self.assertIs(sm.can('bar'), False)
        self.assertIs(sm.can('init'), False)

        sm.process()
        self.assertEqual(sm.state, 'foo')
        self.assertIs(sm.can('bar'), True)
        self.assertIs(sm.can('init'), False)
        self.assertIs(sm.can('foo'), False)

        sm.process()
        self.assertEqual(sm.state, 'bar')
        self.assertIs(sm.can('foo'), True)
        self.assertIs(sm.can('init'), True)
        self.assertIs(sm.can('bar'), True)
Пример #2
0
    def test_can(self):
        sm = StateMachine({
            'initial': 'init',
            'transitions': {
                ('init', 'foo'): lambda: True,
                ('foo', 'bar'): lambda: True,
                ('bar', 'foo'): lambda: True,
                ('bar', 'init'): lambda: True,
                ('bar', 'bar'): lambda: True
            }
        })

        self.assertEqual(sm.state, None)
        self.assertIs(sm.can('init'), True)
        self.assertIs(sm.can('foo'), False)
        self.assertIs(sm.can('bar'), False)
        self.assertIs(sm.can(None), False)

        sm.process()
        self.assertEqual(sm.state, 'init')
        self.assertIs(sm.can('foo'), True)
        self.assertIs(sm.can('bar'), False)
        self.assertIs(sm.can('init'), False)

        sm.process()
        self.assertEqual(sm.state, 'foo')
        self.assertIs(sm.can('bar'), True)
        self.assertIs(sm.can('init'), False)
        self.assertIs(sm.can('foo'), False)

        sm.process()
        self.assertEqual(sm.state, 'bar')
        self.assertIs(sm.can('foo'), True)
        self.assertIs(sm.can('init'), True)
        self.assertIs(sm.can('bar'), True)
Пример #3
0
    def test_can(self):
        sm = StateMachine(
            {
                "initial": "init",
                "transitions": {
                    ("init", "foo"): lambda: True,
                    ("foo", "bar"): lambda: True,
                    ("bar", "foo"): lambda: True,
                    ("bar", "init"): lambda: True,
                    ("bar", "bar"): lambda: True,
                },
            }
        )

        self.assertEqual(sm.state, None)
        self.assertIs(sm.can("init"), True)
        self.assertIs(sm.can("foo"), False)
        self.assertIs(sm.can("bar"), False)
        self.assertIs(sm.can(None), False)

        sm.process()
        self.assertEqual(sm.state, "init")
        self.assertIs(sm.can("foo"), True)
        self.assertIs(sm.can("bar"), False)
        self.assertIs(sm.can("init"), False)

        sm.process()
        self.assertEqual(sm.state, "foo")
        self.assertIs(sm.can("bar"), True)
        self.assertIs(sm.can("init"), False)
        self.assertIs(sm.can("foo"), False)

        sm.process()
        self.assertEqual(sm.state, "bar")
        self.assertIs(sm.can("foo"), True)
        self.assertIs(sm.can("init"), True)
        self.assertIs(sm.can("bar"), True)