Skip to content

Commit 238a7b0

Browse files
committed
move units.UnitTests to the tests package
1 parent 6f495ff commit 238a7b0

2 files changed

Lines changed: 75 additions & 73 deletions

File tree

prime_backup/types/units.py

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import functools
2-
import json
32
import re
4-
import unittest
53
from abc import ABC, abstractmethod
6-
from typing import Union, Tuple, Generic, Dict, TypeVar, NamedTuple, cast, List
4+
from typing import Union, Tuple, Generic, Dict, TypeVar, NamedTuple, cast
75

86
from typing_extensions import override
97

@@ -253,73 +251,3 @@ def _precise_format(cls, val) -> ValueUnitPair:
253251
if not uv.unit.endswith('B'):
254252
uv = ValueUnitPair(uv.value, uv.unit + 'B')
255253
return uv
256-
257-
258-
class UnitTests(unittest.TestCase):
259-
def test_1_types(self):
260-
for cls in [Duration, Quantity, ByteCount]:
261-
for val in [0, '18', 127, 1024, 1440]:
262-
inst = cls(val + 's' if cls == Duration and isinstance(val, str) else val) # type: ignore
263-
self.assertEqual(cls, type(inst))
264-
self.assertIsInstance(inst, str)
265-
self.assertEqual(int(val), getattr(inst, 'value')) # type: ignore
266-
267-
def test_2_1_duration_format(self):
268-
self.assertEqual(123, Duration(123).value)
269-
self.assertEqual(123, Duration('123s').value)
270-
self.assertEqual(ValueUnitPair(2.05, 'm'), Duration('123s').auto_format())
271-
self.assertEqual(ValueUnitPair(123, 's'), Duration('123sec').precise_format())
272-
273-
self.assertEqual(1440, Duration(1440).value)
274-
self.assertEqual('24m', str(Duration('1440s')))
275-
self.assertEqual(ValueUnitPair(24, 'm'), Duration('1440s').auto_format())
276-
self.assertEqual(ValueUnitPair(24, 'm'), Duration('1440s').precise_format())
277-
278-
self.assertEqual(12.3, Duration(12.3).value)
279-
self.assertEqual(12.3, Duration('12.3s').value)
280-
self.assertEqual(ValueUnitPair(12.3, 's'), Duration('12.3s').auto_format())
281-
self.assertEqual(ValueUnitPair(12.3, 's'), Duration('12.3s').precise_format())
282-
283-
self.assertEqual(1234.5678, Duration(1234.5678).value)
284-
self.assertEqual(1234.5678, Duration('1234.5678s').value)
285-
self.assertEqual(ValueUnitPair(1234.5678 / 60, 'm'), Duration('1234.5678s').auto_format())
286-
self.assertEqual(ValueUnitPair(1234.5678, 's'), Duration('1234.5678s').precise_format())
287-
288-
def test_2_2_quantity_format(self):
289-
self.assertEqual(1234, Quantity(1234).value)
290-
self.assertEqual(1234, Quantity('1234').value)
291-
self.assertEqual(ValueUnitPair(1234 / 1024, 'Ki'), Quantity('1234').auto_format())
292-
self.assertEqual(ValueUnitPair(1234, ''), Quantity('1234').precise_format())
293-
294-
self.assertEqual(4096, Quantity(4096).value)
295-
self.assertEqual('4Ki', str(Quantity('4096')))
296-
self.assertEqual(ValueUnitPair(4, 'Ki'), Quantity('4096').auto_format())
297-
self.assertEqual(ValueUnitPair(4, 'Ki'), Quantity('4096').precise_format())
298-
299-
def test_2_3_byte_count_format(self):
300-
self.assertEqual(1234, ByteCount(1234).value)
301-
self.assertEqual(1234, ByteCount('1234').value)
302-
self.assertEqual('4KiB', str(ByteCount('4096')))
303-
304-
def test_3_convert(self):
305-
from mcdreforged.api.utils import serializer
306-
for cls in [Duration, Quantity, ByteCount]:
307-
vals: List[Union[int, str]] = [0, 127, 1024, 1440]
308-
if cls in [Duration]:
309-
vals.extend(['0s', '18s', '36m'])
310-
else:
311-
vals += ['2Gi', '3M', '4ki']
312-
for val in vals:
313-
a = cls(val) # type: ignore
314-
self.assertEqual(str(a), serializer.serialize(a))
315-
316-
b = serializer.deserialize(serializer.serialize(a), cls)
317-
self.assertEqual(a.value, b.value)
318-
319-
c = json.loads(json.dumps(a))
320-
self.assertEqual(str(a), c)
321-
322-
323-
if __name__ == '__main__':
324-
unittest.main()
325-

tests/test_units.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import json
2+
import unittest
3+
from typing import Union, List
4+
5+
from prime_backup.types.units import Duration, Quantity, ByteCount, ValueUnitPair
6+
7+
8+
class UnitTests(unittest.TestCase):
9+
def test_1_types(self):
10+
for cls in [Duration, Quantity, ByteCount]:
11+
for val in [0, '18', 127, 1024, 1440]:
12+
inst = cls(val + 's' if cls == Duration and isinstance(val, str) else val) # type: ignore
13+
self.assertEqual(cls, type(inst))
14+
self.assertIsInstance(inst, str)
15+
self.assertEqual(int(val), getattr(inst, 'value')) # type: ignore
16+
17+
def test_2_1_duration_format(self):
18+
self.assertEqual(123, Duration(123).value)
19+
self.assertEqual(123, Duration('123s').value)
20+
self.assertEqual(ValueUnitPair(2.05, 'm'), Duration('123s').auto_format())
21+
self.assertEqual(ValueUnitPair(123, 's'), Duration('123sec').precise_format())
22+
23+
self.assertEqual(1440, Duration(1440).value)
24+
self.assertEqual('24m', str(Duration('1440s')))
25+
self.assertEqual(ValueUnitPair(24, 'm'), Duration('1440s').auto_format())
26+
self.assertEqual(ValueUnitPair(24, 'm'), Duration('1440s').precise_format())
27+
28+
self.assertEqual(12.3, Duration(12.3).value)
29+
self.assertEqual(12.3, Duration('12.3s').value)
30+
self.assertEqual(ValueUnitPair(12.3, 's'), Duration('12.3s').auto_format())
31+
self.assertEqual(ValueUnitPair(12.3, 's'), Duration('12.3s').precise_format())
32+
33+
self.assertEqual(1234.5678, Duration(1234.5678).value)
34+
self.assertEqual(1234.5678, Duration('1234.5678s').value)
35+
self.assertEqual(ValueUnitPair(1234.5678 / 60, 'm'), Duration('1234.5678s').auto_format())
36+
self.assertEqual(ValueUnitPair(1234.5678, 's'), Duration('1234.5678s').precise_format())
37+
38+
def test_2_2_quantity_format(self):
39+
self.assertEqual(1234, Quantity(1234).value)
40+
self.assertEqual(1234, Quantity('1234').value)
41+
self.assertEqual(ValueUnitPair(1234 / 1024, 'Ki'), Quantity('1234').auto_format())
42+
self.assertEqual(ValueUnitPair(1234, ''), Quantity('1234').precise_format())
43+
44+
self.assertEqual(4096, Quantity(4096).value)
45+
self.assertEqual('4Ki', str(Quantity('4096')))
46+
self.assertEqual(ValueUnitPair(4, 'Ki'), Quantity('4096').auto_format())
47+
self.assertEqual(ValueUnitPair(4, 'Ki'), Quantity('4096').precise_format())
48+
49+
def test_2_3_byte_count_format(self):
50+
self.assertEqual(1234, ByteCount(1234).value)
51+
self.assertEqual(1234, ByteCount('1234').value)
52+
self.assertEqual('4KiB', str(ByteCount('4096')))
53+
54+
def test_3_convert(self):
55+
from mcdreforged.api.utils import serializer
56+
for cls in [Duration, Quantity, ByteCount]:
57+
vals: List[Union[int, str]] = [0, 127, 1024, 1440]
58+
if cls in [Duration]:
59+
vals.extend(['0s', '18s', '36m'])
60+
else:
61+
vals += ['2Gi', '3M', '4ki']
62+
for val in vals:
63+
a = cls(val) # type: ignore
64+
self.assertEqual(str(a), serializer.serialize(a))
65+
66+
b = serializer.deserialize(serializer.serialize(a), cls)
67+
self.assertEqual(a.value, b.value)
68+
69+
c = json.loads(json.dumps(a))
70+
self.assertEqual(str(a), c)
71+
72+
73+
if __name__ == '__main__':
74+
unittest.main()

0 commit comments

Comments
 (0)