Passed
Push — master ( f1be22...ae8339 )
by Ken M.
01:20
created

test_braille_translator   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 166
Duplicated Lines 93.98 %

Importance

Changes 0
Metric Value
eloc 133
dl 156
loc 166
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A Tests.test_Edge() 3 3 2
A Tests.test_Basics() 3 3 2
A Tests.test_Extra() 3 3 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
import unittest
2
3
from digit_stack import digit_stack
4
5
6 View Code Duplication
class Tests(unittest.TestCase):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
7
    TESTS = {
8
        "Basics": [
9
            {
10
                "input": [
11
                    'PUSH 3',
12
                    'POP',
13
                    'POP',
14
                    'PUSH 4',
15
                    'PEEK',
16
                    'PUSH 9',
17
                    'PUSH 0',
18
                    'PEEK',
19
                    'POP',
20
                    'PUSH 1',
21
                    'PEEK',
22
                ],
23
                "answer": 8,
24
            },
25
            {"input": ['POP', 'POP'], "answer": 0},
26
            {"input": ['PUSH 9', 'PUSH 9', 'POP'], "answer": 9},
27
            {"input": [], "answer": 0},
28
        ],
29
        "Edge": [
30
            {
31
                "input": [
32
                    'PUSH 0',
33
                    'PUSH 1',
34
                    'PUSH 2',
35
                    'PUSH 3',
36
                    'PUSH 4',
37
                    'PUSH 5',
38
                    'PUSH 6',
39
                    'PUSH 7',
40
                    'PUSH 8',
41
                    'PUSH 9',
42
                ],
43
                "answer": 0,
44
            },
45
            {"input": ['PEEK'], "answer": 0},
46
            {"input": ['POP'], "answer": 0},
47
            {
48
                "input": [
49
                    'PUSH 0',
50
                    'PEEK',
51
                    'PUSH 1',
52
                    'PEEK',
53
                    'PUSH 2',
54
                    'PEEK',
55
                    'PUSH 3',
56
                    'PEEK',
57
                    'PUSH 4',
58
                    'PEEK',
59
                    'PUSH 5',
60
                    'PEEK',
61
                    'PUSH 6',
62
                    'PEEK',
63
                    'PUSH 7',
64
                    'PEEK',
65
                    'PUSH 8',
66
                    'PEEK',
67
                    'PUSH 9',
68
                    'PEEK',
69
                ],
70
                "answer": 45,
71
            },
72
        ],
73
        "Extra": [
74
            {
75
                "input": [
76
                    'PUSH 3',
77
                    'PUSH 3',
78
                    'PUSH 0',
79
                    'POP',
80
                    'PEEK',
81
                    'PUSH 0',
82
                    'PUSH 2',
83
                    'PUSH 5',
84
                    'PUSH 1',
85
                ],
86
                "answer": 3,
87
            },
88
            {
89
                "input": [
90
                    'PUSH 0',
91
                    'PUSH 5',
92
                    'POP',
93
                    'PUSH 9',
94
                    'PUSH 3',
95
                    'POP',
96
                    'PUSH 5',
97
                    'PUSH 6',
98
                    'PUSH 2',
99
                    'PUSH 7',
100
                    'POP',
101
                    'POP',
102
                    'PUSH 3',
103
                    'PUSH 0',
104
                    'PUSH 9',
105
                    'POP',
106
                ],
107
                "answer": 26,
108
            },
109
            {"input": ['POP', 'PUSH 1', 'POP', 'PUSH 8', 'PEEK', 'POP'], "answer": 17},
110
            {
111
                "input": [
112
                    'POP',
113
                    'PUSH 6',
114
                    'PEEK',
115
                    'POP',
116
                    'POP',
117
                    'PUSH 1',
118
                    'POP',
119
                    'PUSH 3',
120
                    'POP',
121
                    'POP',
122
                    'POP',
123
                    'PEEK',
124
                    'PUSH 5',
125
                    'PEEK',
126
                    'PUSH 3',
127
                    'PEEK',
128
                    'PEEK',
129
                    'POP',
130
                ],
131
                "answer": 30,
132
            },
133
            {
134
                "input": [
135
                    'PUSH 1',
136
                    'PEEK',
137
                    'PUSH 2',
138
                    'PUSH 1',
139
                    'PEEK',
140
                    'PUSH 1',
141
                    'PUSH 9',
142
                    'PEEK',
143
                    'PEEK',
144
                    'PUSH 8',
145
                ],
146
                "answer": 20,
147
            },
148
        ],
149
    }
150
151
    def test_Basics(self):
152
        for i in self.TESTS['Basics']:
153
            assert digit_stack(i['input']) == i['answer']
154
155
    def test_Edge(self):
156
        for i in self.TESTS['Edge']:
157
            assert digit_stack(i['input']) == i['answer']
158
159
    def test_Extra(self):
160
        for i in self.TESTS['Extra']:
161
            assert digit_stack(i['input']) == i['answer']
162
163
164
if __name__ == "__main__":  # pragma: no cover
165
    unittest.main()
166