diff --git a/nemubot/tools/human.py b/nemubot/tools/human.py index ef6f782..b751409 100644 --- a/nemubot/tools/human.py +++ b/nemubot/tools/human.py @@ -32,10 +32,9 @@ def size(size, unit=True): units = ['B','KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'] p = math.floor(math.log(size, 2) / 10) - if unit: - return "%.3f %s" % (size / math.pow(1024,p), units[int(p)]) - else: - return "%.3f" % (size / math.pow(1024,p)) + s = size / math.pow(1024, p) + r = size % math.pow(1024, p) + return (("%.3f" if r else "%.0f") % s) + ((" " + units[int(p)]) if unit else "") def word_distance(str1, str2): diff --git a/nemubot/tools/test_human.py b/nemubot/tools/test_human.py index 00d2967..06b48d8 100644 --- a/nemubot/tools/test_human.py +++ b/nemubot/tools/test_human.py @@ -4,6 +4,23 @@ from nemubot.tools.human import size, word_distance class TestHuman(unittest.TestCase): + def test_size(self): + self.assertEqual(size(42), "42 B") + self.assertEqual(size(42, False), "42") + self.assertEqual(size(1023), "1023 B") + self.assertEqual(size(1024), "1 KiB") + self.assertEqual(size(1024, False), "1") + self.assertEqual(size(1025), "1.001 KiB") + self.assertEqual(size(1025, False), "1.001") + self.assertEqual(size(1024000), "1000 KiB") + self.assertEqual(size(1024000, False), "1000") + self.assertEqual(size(1024 * 1024), "1 MiB") + self.assertEqual(size(1024 * 1024, False), "1") + self.assertEqual(size(1024 * 1024 * 1024), "1 GiB") + self.assertEqual(size(1024 * 1024 * 1024, False), "1") + self.assertEqual(size(1024 * 1024 * 1024 * 1024), "1 TiB") + self.assertEqual(size(1024 * 1024 * 1024 * 1024, False), "1") + def test_Levenshtein(self): self.assertEqual(word_distance("", "a"), 1) self.assertEqual(word_distance("a", ""), 1)