-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_utility.py
95 lines (72 loc) · 3.57 KB
/
test_utility.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
from unittest import TestCase
import pytest
from utility import Utility
from node import Node
class TestUtility(TestCase):
def test_find_least_common_ancestor_should_return_none_when_root_given_none(self):
utility = Utility()
mock_root = None
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=2, node2=3)
assert actual_result is None
def test_find_least_common_ancestor_should_return_root_when_same_root_and_node1_given(self):
utility = Utility()
mock_root = Node(1)
mock_node1 = 1
mock_node2 = 2
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node2)
assert actual_result.key == mock_root.key == mock_node1
def test_find_least_common_ancestor_should_return_root_when_same_root_and_node2_given(self):
utility = Utility()
mock_root = Node(1)
mock_node1 = 2
mock_node2 = 1
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node2)
assert actual_result.key == mock_root.key == mock_node2
def test_find_least_common_ancestor_should_return_same_node_when_given_nodes_are_same(self):
utility = Utility()
mock_node1 = 2
mock_node2 = 3
mock_root = Node(1)
mock_root.left = Node(mock_node1)
mock_root.right = Node(mock_node2)
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node1)
assert actual_result.key == mock_node1
def test_find_least_common_ancestor_should_return_parent_node_when_given_nodes_are_on_different_branch(self):
utility = Utility()
mock_root_value = 1
mock_node1 = 4
mock_node2 = 7
mock_root = Node(mock_root_value)
mock_root.left = Node(2)
mock_root.right = Node(3)
mock_root.left.left = Node(mock_node1)
mock_root.left.right = Node(5)
mock_root.right.left = Node(6)
mock_root.right.right = Node(mock_node2)
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node2)
assert actual_result.key == mock_root_value
def test_find_least_common_ancestor_should_raise_runtime_error_when_exception_occurs(self):
utility = Utility()
mock_node1 = 2
mock_node2 = 3
mock_root = 1
with self.assertRaises(RuntimeError) as context:
utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node2)
assert context.exception.args[0] == 'Oops! Something went wrong finding Least Common Ancestor.'
assert type(context.exception.args[1]) == AttributeError
@pytest.mark.parametrize('mock_node1, mock_node2, expected_result', [[6, 7, 3], [3, 7, 3], [8, 7, 1]])
def test_find_least_common_ancestor_should_return_proper_result_when_given_nodes(mock_node1,
mock_node2,
expected_result):
utility = Utility()
mock_root = Node(1)
mock_root.left = Node(2)
mock_root.right = Node(3)
mock_root.left.left = Node(4)
mock_root.left.right = Node(5)
mock_root.right.left = Node(6)
mock_root.right.right = Node(7)
mock_root.left.left.left = Node(8)
mock_root.left.left.right = Node(9)
actual_result = utility.find_least_common_ancestor(root=mock_root, node1=mock_node1, node2=mock_node2)
assert actual_result.key == expected_result