From d0b4060739ce4b77b94013c0c18ed533a40c91f7 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Mon, 7 Mar 2022 17:41:13 -0300 Subject: [PATCH] [common] fix: size to byte conversion --- bauh/commons/util.py | 12 +++++++----- tests/common/test_system.py | 23 ++++++++++------------- tests/common/test_util.py | 13 +++++++++++++ 3 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 tests/common/test_util.py diff --git a/bauh/commons/util.py b/bauh/commons/util.py index f970508d..01d2b962 100644 --- a/bauh/commons/util.py +++ b/bauh/commons/util.py @@ -17,15 +17,17 @@ def size_to_byte(size: float, unit: str) -> int: if lower_unit[0] == 'b': final_size = size elif lower_unit[0] == 'k': - final_size = size * 1000 + final_size = size * 1024 elif lower_unit[0] == 'm': - final_size = size * 1000000 + final_size = size * (1024 ** 2) + elif lower_unit[0] == 'g': + final_size = size * (1024 ** 3) elif lower_unit[0] == 't': - final_size = size * 1000000000000 + final_size = size * (1024 ** 4) else: - final_size = size * 1000000000000000 + final_size = size * (1024 ** 5) - return int(final_size) + return round(final_size) def datetime_as_milis(date: datetime = datetime.utcnow()) -> int: diff --git a/tests/common/test_system.py b/tests/common/test_system.py index 635496f6..d96aca0a 100644 --- a/tests/common/test_system.py +++ b/tests/common/test_system.py @@ -5,29 +5,26 @@ from bauh.commons import system class GetHumanSizeStr(TestCase): - def test__must_return_1Kb_for_1024(self): + def test__must_properly_convert_to_Kb(self): self.assertEqual('1.00 Kb', system.get_human_size_str(1024)) - - def test__must_return_1_5Kb_for_1536(self): self.assertEqual('1.50 Kb', system.get_human_size_str(1536)) - - def test__must_return_1_75Kb_for_1792(self): self.assertEqual('1.75 Kb', system.get_human_size_str(1792)) + self.assertEqual('57.30 Kb', system.get_human_size_str(58675.2)) - def test__must_return_1Mb_for_1048576(self): + def test__must_properly_convert_to_Mb(self): self.assertEqual('1.00 Mb', system.get_human_size_str(1048576)) - - def test__must_return_1_2Mb_for_1258291(self): self.assertEqual('1.20 Mb', system.get_human_size_str(1258291)) - - def test__must_return_1_5Mb_for_1572864(self): self.assertEqual('1.50 Mb', system.get_human_size_str(1572864)) + self.assertEqual('57.30 Mb', system.get_human_size_str(60083404.8)) - def test__must_return_1Gb_for_1073741824(self): + def test__must_properly_convert_to_Gb(self): self.assertEqual('1.00 Gb', system.get_human_size_str(1073741824)) + self.assertEqual('57.30 Gb', system.get_human_size_str(61525406515.2)) - def test__must_return_1Tb_for_1099511627776(self): + def test__must_properly_convert_to_Tb(self): self.assertEqual('1.00 Tb', system.get_human_size_str(1099511627776)) + self.assertEqual('57.30 Tb', system.get_human_size_str(63002016271564.8)) - def test__must_return_1Pb_for_1125899906842624(self): + def test__must_properly_convert_to_Pb(self): self.assertEqual('1.00 Pb', system.get_human_size_str(1125899906842624)) + self.assertEqual('57.30 Pb', system.get_human_size_str(64514064662082350)) diff --git a/tests/common/test_util.py b/tests/common/test_util.py new file mode 100644 index 00000000..10f45a6c --- /dev/null +++ b/tests/common/test_util.py @@ -0,0 +1,13 @@ +from unittest import TestCase + +from bauh.commons.util import size_to_byte + + +class SizeToByteTest(TestCase): + + def test_must_return_right_number_of_bytes(self): + self.assertEqual(round(float('58675.2')), size_to_byte(57.3, 'K')) + self.assertEqual(round(float('60083404.8')), size_to_byte(57.3, 'M')) + self.assertEqual(round(float('61525406515.2')), size_to_byte(57.3, 'G')) + self.assertEqual(round(float('63002016271564.8')), size_to_byte(57.3, 'T')) + self.assertEqual(round(float('64514064662082350')), size_to_byte(57.3, 'P'))