def test_userdata_nesting(self): """Test serial manipulation of userdata.""" sm = StateMachine(['done', 'preempted', 'aborted']) with sm: StateMachine.add('SETTER', Setter(), {'done': 'GETTER'}) StateMachine.add('GETTER', Getter(), {'done': 'NEST'}) sm2 = StateMachine(['done', 'aborted', 'preempted']) sm2.register_input_keys(['a']) with sm2: StateMachine.add( 'ASSERTER', ConditionState(lambda ud: 'a' in ud, input_keys=['a']), { 'true': 'done', 'false': 'aborted' }) StateMachine.add('NEST', sm2) outcome = sm.execute() assert outcome == 'done' assert 'a' in sm.userdata assert 'b' in sm.userdata assert sm.userdata.a == 'A' assert sm.userdata.b == 'A'
def test_userdata_nesting2(self): """Test setting of userdata manually on construction.""" sm = StateMachine(['done', 'aborted', 'preempted']) sm.userdata.foo = 1 with sm: StateMachine.add('SETTER', Setter(), {'done': 'GETTER'}) StateMachine.add('GETTER', Getter(), {'done': 'NEST'}) sm2 = StateMachine(['done', 'aborted', 'preempted']) sm2.register_input_keys(['foo']) with sm2: StateMachine.add( 'ASSERTER', ConditionState(lambda ud: 'foo' in ud, input_keys=['foo']), { 'true': 'done', 'false': 'aborted' }) StateMachine.add('NEST', sm2) outcome = sm.execute() assert outcome == 'done' assert 'foo' in sm.userdata