diff options
Diffstat (limited to 'tests/test_size_to_str.py')
-rw-r--r-- | tests/test_size_to_str.py | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/test_size_to_str.py b/tests/test_size_to_str.py new file mode 100644 index 0000000..6320e39 --- /dev/null +++ b/tests/test_size_to_str.py @@ -0,0 +1,104 @@ +#!/usr/bin/python3 + +__author__ = "Barry Warsaw <barry@ubuntu.com>, James Hunt, Michael Vogt" + +import unittest + +import apt_pkg +import testcommon + + +class SizeToStrTestCase(testcommon.TestCase): + """Test apt_pkg.size_to_str""" + + DATA = { + # XXX: note the trailing spaces for some of these entries! + 10**1: "10 ", + 10**2: "100 ", + 10**3: "1000 ", + 10**4: "10.0 k", + 10**5: "100 k", + 10**6: "1000 k", + 10**7: "10.0 M", + 10**8: "100 M", + 10**9: "1000 M", + 10**10: "10.0 G", + 10**11: "100 G", + 10**12: "1000 G", + 10**13: "10.0 T", + 10**14: "100 T", + 10**15: "1000 T", + 10**16: "10.0 P", + 10**17: "100 P", + 10**18: "1000 P", + 10**19: "10.0 E", + 10**20: "100 E", + 10**21: "1000 E", + 10**22: "10.0 Z", + 10**23: "100.0 Z", + 10**24: "1000 Z", + # 10 ** 25: "10.0 Y", + 10**26: "100 Y", + 10**27: "1000 Y", + # That's our limit :) + 10**28: "10000 Y", + 0: "0 ", + 1: "1 ", + 1024: "1024 ", + 10240: "10.2 k", + 102400: "102 k", + 1024000: "1024 k", + 10240000: "10.2 M", + 102400000: "102 M", + 2147483647: "2147 M", + 2147483648: "2147 M", + 1024000000: "1024 M", + 10240000000: "10.2 G", + 9: "9 ", + 99: "99 ", + 999: "999 ", + 9999: "9999 ", + 99999: "100.0 k", + 999999: "1000 k", + 9999999: "10000 k", + 99999999: "100.0 M", + 999999999: "1000 M", + 9999999999: "10000 M", + 99999999999: "100.0 G", + 999999999999: "1000 G", + 9999999999999: "10000 G", + 99999999999999: "100.0 T", + 999999999999999: "1000 T", + 9999999999999999: "10.0 P", + 99999999999999999: "100 P", + 999999999999999999: "1000 P", + 9999999999999999999: "10.0 E", + 99999999999999999999: "100 E", + 999999999999999999999: "1000 E", + 9999999999999999999999: "10.0 Z", + 999999999999999999999999: "1000 Z", + } + + def test_from_data(self): + for k, v in self.DATA.items(): + size = apt_pkg.size_to_str(k) + msg = f"size_to_str({k}) returned '{size}', expected '{v}'" + self.assertEqual(size, v, msg) + + def test_raise_on_unsupported(self): + for v in ["hello", None, {}, [], ()]: + with self.assertRaises(TypeError): + apt_pkg.size_to_str(v) + + +class RegressionTestCase(testcommon.TestCase): + """Regression test for LP: #1030278""" + + def test_no_overflow_error(self): + # LP: #1030278 produces an overflow error in size_to_str() with a big + # value under Python 3. + self.assertEqual(apt_pkg.size_to_str(2147483648000000000000), "2147 E") + + +if __name__ == "__main__": + unittest.main() |