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