def test_nested_empty(self): states = [ composite('a', [ orthogonal('submachines', [ composite('sub1', [ leaf('sub11'), composite('sub12', [ leaf('sub121'), leaf('sub122'), ]) ]), composite('sub2', [ leaf('sub21'), composite('sub22', [ leaf('sub221'), leaf('sub222'), ]), ]), ]), composite('b', [ leaf('b1') ]), ]), composite('c', [ leaf('c1'), leaf('c2'), ]), ] names = [st.name for st in flatten(states)] expected = ['a', 'submachines', 'sub1', 'sub11', 'sub12', 'sub121', 'sub122', 'sub2', 'sub21', 'sub22', 'sub221', 'sub222', 'b', 'b1', 'c', 'c1', 'c2'] assert len(names) == len(expected) assert set(names) == set(expected)
def test_reformat_simple_submachine(self): states = { 'a': State( [ ({ 'sub1': State({ 'x': State() }) }, { } ), ({ 'sub2': State({ 'y': State({ 'deep': State() })})}, { } ), ]) } exp_states = [ orthogonal('a', [ composite('a[0].sub1', [ leaf('a[0].x') ]), composite('a[1].sub2', [ composite('a[1].y', [ leaf('a[1].deep') ]) ]) ]) ] assert reformat(states, {}) == (exp_states, {})
def test_reformat_nested_submachines(self): states = { 'a': State({ 'a1': State({ 'a11': State(), }), 'a2': State({ 'a12': State(), }), }), 'b': State( [ ( { 'sub1': State({ 'sub1a': State(), 'sub1_ortho': State( [ ({ 'deep1': State({ 'deep2': State() }), }, {}), ({ 'deep1': State({ 'deep2': State() }), }, {}), ]), }), }, { }), ( { 'sub2': State({ 'sub2a': State(), 'sub2b': State({ 'deep': State() }), })}, { } ), ]) } exp_states = [ composite('a', [ composite('a1', [ leaf('a11'), ]), composite('a2', [ leaf('a12'), ]), ]), orthogonal('b', [ composite('b[0].sub1', [ leaf('b[0].sub1a'), orthogonal('b[0].sub1_ortho', [ composite('b[0].sub1_ortho[0].deep1', [ leaf('b[0].sub1_ortho[0].deep2') ]), composite('b[0].sub1_ortho[1].deep1', [ leaf('b[0].sub1_ortho[1].deep2') ]), ]), ]), composite('b[1].sub2', [ leaf('b[1].sub2a'), composite('b[1].sub2b', [ leaf('b[1].deep') ]), ]), ]) ] assert reformat(states, {}) == (exp_states, {})