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

test_friendly_number.Tests.test_Edges()   A

Complexity

Conditions 2

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
import unittest
2
3
from friendly_number import friendly_number
4
5
6
class Tests(unittest.TestCase):
7
    TESTS = {
8
        "1. Base": [
9
            {"input": [102, {}], "answer": '102'},
10
            {"input": [12_341_234, {'decimals': 1}], "answer": '12.3M'},
11
            {"input": [12_000_000, {'decimals': 3}], "answer": '12.000M'},
12
            {"input": [102, {'decimals': 2}], "answer": '102.00'},
13
            {"input": [10240, {}], "answer": '10k'},
14
            {
15
                "input": [1_024_000_000, {'base': 1024, 'suffix': 'iB'}],
16
                "answer": '976MiB',
17
            },
18
            {"input": [-150, {'base': 100, "powers": ['', 'd', 'D']}], "answer": '-1d'},
19
            {
20
                "input": [-155, {'base': 100, "decimals": 1, "powers": ['', 'd', 'D']}],
21
                "answer": '-1.6d',
22
            },
23
            {
24
                "input": [255_000_000_000, {"powers": ['', 'k', 'M']}],
25
                "answer": '255000M',
26
            },
27
        ],
28
        "2. Edges": [
29
            {"input": [1, {}], "answer": '1'},
30
            {"input": [0, {'decimals': 3, 'suffix': "th"}], "answer": '0.000th'},
31
            {"input": [10 ** 24, {}], "answer": '1Y', "explanation": "10**24"},
32
            {"input": [10 ** 32, {}], "answer": '100000000Y', "explanation": "10**32"},
33
            {
34
                "input": [
35
                    4_294_967_297,
36
                    {'base': 2, 'powers': ["p" + str(n) for n in range(32)]},
37
                ],
38
                "answer": '2p31',
39
            },
40
            {"input": [1, {'decimals': 15}], "answer": '1.000000000000000'},
41
        ],
42
        "3. Extra": [
43
            {"input": [42, {'base': 10, 'powers': ["u", "d"]}], "answer": '4d'},
44
            {"input": [42, {'powers': ["u", "d"], "suffix": "-n"}], "answer": '42u-n'},
45
            {"input": [19_821_904, {}], "answer": '19M'},
46
            {"input": [4_000_000_001, {"base": 1024, "decimals": 1}], "answer": '3.7G'},
47
            {"input": [9000, {"suffix": "iB"}], "answer": '9kiB'},
48
        ],
49
    }
50
51
    def test_Base(self):
52
        for i in self.TESTS['1. Base']:
53
            [number, parameters] = i['input']
54
            assert friendly_number(number, **parameters) == i['answer'], i['input']
55
56
    def test_Edges(self):
57
        for i in self.TESTS['2. Edges']:
58
            [number, parameters] = i['input']
59
            assert friendly_number(number, **parameters) == i['answer'], i['input']
60
61
    def test_Extra(self):
62
        for i in self.TESTS['3. Extra']:
63
            [number, parameters] = i['input']
64
            assert friendly_number(number, **parameters) == i['answer'], i['input']
65
66
67
if __name__ == "__main__":  # pragma: no cover
68
    unittest.main()
69