1from transitions import Machine
2
3
4class Stuff(object):
5
6    is_false = False
7    is_True = True
8
9    def __init__(self, states=None, machine_cls=Machine, extra_kwargs={}):
10
11        self.state = None
12        self.message = None
13        states = ['A', 'B', 'C', 'D', 'E', 'F'] if states is None else states
14
15        args = [self]
16        kwargs = {
17            'states': states,
18            'initial': 'A',
19            'name': 'Test Machine',
20        }
21        kwargs.update(extra_kwargs)
22        if machine_cls is not None:
23            self.machine = machine_cls(*args, **kwargs)
24        self.level = 1
25        self.transitions = 0
26        self.machine_cls = machine_cls
27
28    @staticmethod
29    def this_passes():
30        return True
31
32    @staticmethod
33    def this_fails():
34        return False
35
36    @staticmethod
37    def this_raises(exception, *args, **kwargs):
38        raise exception
39
40    @staticmethod
41    def this_fails_by_default(boolean=False):
42        return boolean
43
44    @staticmethod
45    def extract_boolean(event_data):
46        return event_data.kwargs['boolean']
47
48    def goodbye(self):
49        self.message = "So long, suckers!"
50
51    def hello_world(self):
52        self.message = "Hello World!"
53
54    def greet(self):
55        self.message = "Hi"
56
57    def meet(self):
58        self.message = "Nice to meet you"
59
60    def hello_F(self):
61        if not hasattr(self, 'message'):
62            self.message = ''
63        self.message += "Hello F!"
64
65    def increase_level(self):
66        self.level += 1
67        self.transitions += 1
68
69    def decrease_level(self):
70        self.level -= 1
71        self.transitions += 1
72
73    def set_message(self, message="Hello World!"):
74        self.message = message
75
76    def extract_message(self, event_data):
77        self.message = event_data.kwargs['message']
78
79    def on_enter_E(self, msg=None):
80        self.message = "I am E!" if msg is None else msg
81
82    def on_exit_E(self):
83        self.exit_message = "E go home..."
84
85    def on_enter_F(self):
86        self.message = "I am F!"
87
88    @property
89    def property_that_fails(self):
90        return self.is_false
91
92
93class InheritedStuff(Machine):
94
95    def __init__(self, states, initial='A'):
96
97        self.state = None
98
99        Machine.__init__(self, states=states, initial=initial)
100
101    @staticmethod
102    def this_passes():
103        return True
104
105
106class DummyModel(object):
107    pass
108
109
110class SomeContext(object):
111    def __init__(self, event_list):
112        self._event_list = event_list
113
114    def __enter__(self):
115        self._event_list.append((self, "enter"))
116
117    def __exit__(self, type, value, traceback):
118        self._event_list.append((self, "exit"))
119