Passed
Push — master ( a892fa...d1ecba )
by Ken M.
01:03
created

test_shoot_range.Tests.test_Extra()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
import unittest
2
3
from shoot_range import shot
4
5
6
class Tests(unittest.TestCase):
7
    TESTS = {
8
        "Basics": [
9
            {
10
                "input": ((2, 2), (5, 7), (11, 2), (8, 3)),
11
                "answer": 100,
12
                "explanation": [3.5, 4.5],
13
            },
14
            {
15
                "input": ((2, 2), (5, 7), (11, 2), (7, 2)),
16
                "answer": 0,
17
                "explanation": [2.0, 2.0],
18
            },
19
            {
20
                "input": ((2, 2), (5, 7), (11, 2), (8, 4)),
21
                "answer": 29,
22
                "explanation": [4.571_428_571_428_571, 6.285_714_285_714_286],
23
            },
24
            {
25
                "input": ((2, 2), (5, 7), (11, 2), (9, 5)),
26
                "answer": -1,
27
                "explanation": [6.263_157_894_736_842_5, 9.105_263_157_894_736],
28
            },
29
            {
30
                "input": ((2, 2), (5, 7), (11, 2), (10.5, 3)),
31
                "answer": -1,
32
                "explanation": [6.909_090_909_090_909, 10.181_818_181_818_182],
33
            },
34
        ],
35
        "Extra": [
36
            {
37
                "input": ((2, 2), (5, 7), (8, 3), (11, 2)),
38
                "answer": -1,
39
                "explanation": [14, 1],
40
            },
41
            {
42
                "input": ((1, 1), (99, 99), (99, 1), (41, 39)),
43
                "answer": 79,
44
                "explanation": [39.791_666_666_666_664, 39.791_666_666_666_664],
45
            },
46
            {
47
                "input": ((10, 10), (10, 90), (50, 90), (50, 50)),
48
                "answer": -1,
49
                "explanation": None,
50
            },
51
            {
52
                "input": ((10, 10), (10, 90), (50, 60), (70, 60)),
53
                "answer": -1,
54
                "explanation": None,
55
            },
56
            {
57
                "input": ((10, 10), (10, 90), (70, 60), (50, 60)),
58
                "answer": 75,
59
                "explanation": [10.0, 60.0],
60
            },
61
            {
62
                "input": ((2, 2), (10, 2), (5, 10), (5, 5)),
63
                "answer": 75,
64
                "explanation": [5.0, 2.0],
65
            },
66
            {
67
                "input": ((2, 2), (10, 2), (5, 10), (3, 5)),
68
                "answer": -1,
69
                "explanation": [1.8, 2.0],
70
            },
71
            {
72
                "input": ((2, 2), (10, 2), (5, 10), (4, 5)),
73
                "answer": 35,
74
                "explanation": [3.4, 2.0],
75
            },
76
            {
77
                "input": ((2, 10), (10, 2), (10, 10), (3, 10)),
78
                "answer": 0,
79
                "explanation": [2.0, 10.0],
80
            },
81
            {
82
                "input": ((2, 10), (10, 2), (10, 10), (10, 4)),
83
                "answer": 0,
84
                "explanation": [10.0, 2.0],
85
            },
86
            {
87
                "input": ((2, 10), (10, 2), (10, 10), (3, 10.1)),
88
                "answer": -1,
89
                "explanation": [1.884_057_971_014_493_1, 10.115_942_028_985_506],
90
            },
91
            {
92
                "input": ((2, 10), (10, 2), (10, 10), (3, 9.9)),
93
                "answer": 3,
94
                "explanation": [2.112_676_056_338_027_6, 9.887_323_943_661_972],
95
            },
96
        ],
97
    }
98
99
    def test_Basics(self):
100
        for i in self.TESTS['Basics']:
101
            assert shot(*i['input']) == i['answer']
102
103
    def test_Extra(self):
104
        for i in self.TESTS['Extra']:
105
            assert shot(*i['input']) == i['answer']
106
107
108
if __name__ == "__main__":  # pragma: no cover
109
    unittest.main()
110