from day12 import Node, AssignmentOne, AssignmentTwo def test_calculate_all_paths_assignment_one(): start = Node(id='start') end = Node(id='end') start.nodes.add(end) end.nodes.add(start) assert AssignmentOne.calculate_all_paths(start, end) == [ [start, end] ] a = Node(id='a') start.nodes = { a } a.nodes = { start, end } end.nodes = { end } assert AssignmentOne.calculate_all_paths(start, end) == [ [start, a, end] ] b = Node(id='b') start.nodes = { a, b } b.nodes = { start, end } a.nodes = { start, end } end.nodes = { a, b } assert sorted(AssignmentOne.calculate_all_paths(start, end)) == sorted([ [start, a, end], [start, b, end] ]) a.nodes.add(b) b.nodes.add(a) assert sorted(AssignmentOne.calculate_all_paths(start, end)) == sorted([ [start, a, end], [start, a, b, end], [start, b, end], [start, b, a, end] ]) a.big = True assert sorted(AssignmentOne.calculate_all_paths(start, end)) == sorted([ [start, a, end], [start, a, b, end], [start, a, b, a, end], [start, b, end], [start, b, a, end], ]) def test_calculate_all_paths_assignment_two(): start = Node(id='start') end = Node(id='end') a = Node(id='a') b = Node(id='b') start.nodes.add(a) a.nodes.add(b) a.nodes.add(start) b.nodes.add(a) b.nodes.add(end) end.nodes.add(b) assert sorted(AssignmentTwo.calculate_all_paths(start, end)) == sorted([ [start, a, b, end] ])