def test_with_different_subclasses(self): class SubState(State): pass s1 = State() s2 = SubState() assert not s1 == s2 s1 = SubState() s2 = SubState() assert s1 == s2 s1.states = { 'a': State({ 's': State(), 's2': State() }), 'b': State() } s2.states = { 'a': State({ 's': SubState(), 's2': State() }), 'b': State() } assert not s1 == s2 s1.states = { 'a': State({ 's': SubState(), 's2': State() }), 'b': State() } assert s1 == s2
def test_children_empty(self): s1 = State() s2 = State() s1.states = [] assert not s1 == s2 # s2 has {} s2.states = [] assert s1 == s2
def test_children_list_different_order(self): s1 = State() s2 = State() s1.states = [leaf('1'), leaf('2'), leaf('3')] s2.states = [leaf('1'), leaf('2'), leaf('3')] assert s1 == s2 s2.states = [leaf('3'), leaf('1'), leaf('2')] assert s1 == s2 s2.states = [leaf('3'), leaf('999'), leaf('2')] assert not s1 == s2
def test_children_list_nested(self): s1 = State() s2 = State() s1.states = [ State([State(), State()]), State([State(), State()]), ] s2.states = [ State([State()]), State([State(), State()]), ] assert not s1 == s2 s2.states = [ State([State(), State()]), State([State(), State()]), ] assert s1 == s2
def test_children_dict_nested(self): s1 = State() s2 = State() s1.states = { 'a': State({ 's': State(), 's2': State() }), 'b': State() } assert not s1 == s2 s2.states = { 'a': State({ 's': State(), 's2': State() }), 'b': State() } assert s1 == s2
def test_children_list_different_order_nested(self): s1 = State() s2 = State() s1.states = [ composite('A', [leaf('1'), leaf('2')]), composite('B', [leaf('3'), leaf('4')]), ] s2.states = [ composite('A', [leaf('2'), leaf('1')]), composite('B', [leaf('4'), leaf('3')]), ] assert s1 == s2 s2.states = [ composite('B', [leaf('4'), leaf('3')]), composite('A', [leaf('2'), leaf('1')]), ] assert s1 == s2 s2.states = [ composite('B', [leaf('4'), leaf('3')]), composite('A', [leaf('999'), leaf('1')]), ] assert not s1 == s2
def test_children_dict(self): s1 = State() s2 = State() s1.states = {1: 'a', 2: {}} s2.states = {1: 'a', 2: {}} assert s1 == s2 s1.states = {1: 'a', 2: {3: {}}} assert not s1 == s2 s1.states = [State(), State()] s2.states = [State(), State()] assert s1 == s2 s1.states = { 'a': State(), 'b': State() } s2.states = { 'a': State(), 'b': State() } assert s1 == s2