|
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
|
|
|
|