Passed
Push — develop ( b1b5c2...3c9778 )
by Bastien
02:39
created

tracim_backend.tests.library.test_utils   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
eloc 47
dl 0
loc 66
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A TestColor.test_color__init__ok_bad_value() 0 7 3
A TestPasswordGenerator.test_password_generator_ok_nominal_case() 0 5 2
A TestClamp.test_clamp_ok_nominal_case() 0 8 1
A TestColor.test_color__get_hex_color__verify__corner_case() 0 4 1
A TestColor.test_color__init__ok_nominal_case() 0 3 1
A TestColor.test_color__correct_color_format() 0 17 2
1
import string
2
3
import pytest
4
from tracim_backend.lib.utils.utils import password_generator, Color, clamp
5
from tracim_backend.lib.utils.utils import ALLOWED_AUTOGEN_PASSWORD_CHAR
6
from tracim_backend.lib.utils.utils import DEFAULT_PASSWORD_GEN_CHAR_LENGTH
7
8
9
class TestPasswordGenerator(object):
10
11
    def test_password_generator_ok_nominal_case(self):
12
        password = password_generator()
13
        assert len(password) == DEFAULT_PASSWORD_GEN_CHAR_LENGTH
14
        for char in password:
15
            assert char in ALLOWED_AUTOGEN_PASSWORD_CHAR
16
17
18
class TestClamp(object):
19
20
    def test_clamp_ok_nominal_case(self):
21
        # min
22
        assert clamp(-0.1, 0.0, 255.0) == 0
23
        # max
24
        assert clamp(255.1, 0.0, 255.0) == 255
25
        # convert as int -> truncate
26
        assert clamp(125.1, 0.0, 255.0) == 125
27
        assert clamp(125.9, 0.0, 255.0) == 125
28
29
30
class TestColor(object):
31
32
    def test_color__init__ok_nominal_case(self):
33
        color = Color('#FFFFFF')
34
        assert color.normal == '#FFFFFF'
35
36
    def test_color__init__ok_bad_value(self):
37
        # more than 7 char
38
        with pytest.raises(AssertionError):
39
            Color('#FFFFFFFA')
40
        # no "#" at the beginning
41
        with pytest.raises(AssertionError):
42
            Color('FFFFFFA')
43
44
    def test_color__correct_color_format(self):
45
        color = Color('#FFFFFF')
46
        colors = [
47
            color.normal,
48
            color.darken,
49
            color.darken,
50
            color.get_hexcolor(1.5),
51
            color.get_hexcolor(3.47),
52
            color.get_hexcolor(5.2),
53
            color.get_hexcolor(0.1),
54
            color.get_hexcolor(0),
55
            color.get_hexcolor(0.25),
56
        ]
57
        for color in colors:
58
            assert isinstance(color, str)
59
            assert len(color) == 7
60
            assert color[0] == '#'
61
62
    def test_color__get_hex_color__verify__corner_case(self):
63
        color = Color('#FF3232')
64
        assert color.get_hexcolor(0) == "#000000"
65
        assert color.get_hexcolor(99) == "#ffffff"
66