/
tests.py
106 lines (86 loc) · 2.74 KB
/
tests.py
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from Tree import Tree
import unittest
def init_tree() -> Tree:
"""
Generates a tree that looks like
6
/ \
5 8
/\ /\
2 7 9
/\ /\
1 3 10
/\
4
"""
tree = Tree()
children = [6, 8, 9, 5, 2, 1, 3, 7, 10, 4]
[tree.add_child(child) for child in children]
return tree
class CreateParent(unittest.TestCase):
def test(self):
tree = Tree()
tree.add_child(5)
assert(tree.parent == 5)
class ChildrenAreNone(unittest.TestCase):
def test(self):
tree = Tree()
tree.add_child(5)
assert(tree.tree[5]["left"] is None)
assert(tree.tree[5]["right"] is None)
class SingleLeftChild(unittest.TestCase):
def test(self):
tree = Tree()
tree.add_child(5)
tree.add_child(3)
assert(tree.tree[5]["left"] == 3)
class SingleRightChild(unittest.TestCase):
def test(self):
tree = Tree()
tree.add_child(5)
tree.add_child(6)
assert(tree.tree[5]["right"] == 6)
class TwoChildren(unittest.TestCase):
def test(self):
tree = Tree()
children = [5, 4, 6]
[tree.add_child(child) for child in children]
assert(tree.tree[5]["left"] == 4 and tree.tree[5]["right"] == 6)
class ComplexTree(unittest.TestCase):
def test(self):
tree = init_tree()
assert(tree.parent == 6)
try:
assert(tree.tree == {
6: {"left": 5, "right": 8},
8: {"left": 7, "right": 9},
9: {"left": None, "right": 10},
5: {"left": 2, "right": None},
2: {"left": 1, "right": 3},
1: {"left": None, "right": None},
3: {"left": None, "right": 4},
7: {"left": None, "right": None},
10: {"left": None, "right": None},
4: {"left": None, "right": None}
})
except AssertionError:
raise AssertionError(str(tree.tree))
class Collate(unittest.TestCase):
def test(self):
tree = init_tree()
l = tree.collate()
try:
assert(l == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
except AssertionError:
raise AssertionError(str(l))
class CollateWithDuplicates(unittest.TestCase):
def test(self):
tree = init_tree()
tree.add_child(4)
l = tree.collate()
try:
assert(l == [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]) # Extra 4
except AssertionError:
raise AssertionError(str(l))
if __name__ == "__main__":
unittest.main()