PublicApiTests.test_microbar_ints()   C
last analyzed

Complexity

Conditions 11

Size

Total Lines 17

Duplication

Lines 17
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 11
dl 17
loc 17
rs 5.5714
c 1
b 0
f 0

How to fix   Complexity   

Complexity

Complex classes like PublicApiTests.test_microbar_ints() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
from __future__ import absolute_import
2
from __future__ import division
3
from __future__ import print_function
4
from __future__ import unicode_literals
5
6
from unittest.case import TestCase
7
8
from microbar.microbar import MicroBar
9
10
11
class PublicApiTests(TestCase):
12
13
    number_bars = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
14
15
    def test_instanciation_min_value(self):
16
        minimum = '0'
17
        maximum = 9
18
19
        with self.assertRaises(TypeError):
20
            MicroBar(minimum=minimum, maximum=maximum)
21
22
    def test_instanciation_max_value(self):
23
        minimum = 0
24
        maximum = '9'
25
26
        with self.assertRaises(TypeError):
27
            MicroBar(minimum=minimum, maximum=maximum)
28
29
    def test_instanciation_min_max(self):
30
        minimum = 9
31
        maximum = 0
32
33
        with self.assertRaises(ValueError):
34
            MicroBar(minimum=minimum, maximum=maximum)
35
36
    def test_instanciation_bars_type(self):
37
        minimum = 0
38
        maximum = 9
39
        bars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
40
41
        with self.assertRaises(TypeError):
42
            MicroBar(minimum=minimum, maximum=maximum, bars=bars)
43
44 View Code Duplication
    def test_microbar_ints(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
45
        minimum = 0
46
        maximum = 9
47
        bars = self.number_bars
48
49
        microbar = MicroBar(minimum=minimum, maximum=maximum, bars=bars)
50
51
        assert microbar.get_bar(value=0) == '0'
52
        assert microbar.get_bar(value=1) == '1'
53
        assert microbar.get_bar(value=2) == '2'
54
        assert microbar.get_bar(value=3) == '3'
55
        assert microbar.get_bar(value=4) == '4'
56
        assert microbar.get_bar(value=5) == '5'
57
        assert microbar.get_bar(value=6) == '6'
58
        assert microbar.get_bar(value=7) == '7'
59
        assert microbar.get_bar(value=8) == '8'
60
        assert microbar.get_bar(value=9) == '9'
61
62 View Code Duplication
    def test_microbar_floats(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
63
        minimum = 0.0
64
        maximum = 0.9
65
        bars = self.number_bars
66
67
        microbar = MicroBar(minimum=minimum, maximum=maximum, bars=bars)
68
69
        assert microbar.get_bar(value=0.0) == '0'
70
        assert microbar.get_bar(value=0.1) == '1'
71
        assert microbar.get_bar(value=0.2) == '2'
72
        assert microbar.get_bar(value=0.3) == '3'
73
        assert microbar.get_bar(value=0.4) == '4'
74
        assert microbar.get_bar(value=0.5) == '5'
75
        assert microbar.get_bar(value=0.6) == '6'
76
        assert microbar.get_bar(value=0.7) == '7'
77
        assert microbar.get_bar(value=0.8) == '8'
78
        assert microbar.get_bar(value=0.9) == '9'
79