1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
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]
])
|