|
Packit Service |
af52df |
#!/usr/bin/env python
|
|
Packit Service |
af52df |
# -*- coding: utf-8 -*-
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
import unittest
|
|
Packit Service |
af52df |
import copy
|
|
Packit Service |
af52df |
import locale
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
from decimal import Decimal
|
|
Packit Service |
af52df |
from locale_utils import get_avail_locales, requires_locales
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
from bytesize import Size
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
class SizeTestCase(unittest.TestCase):
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
@classmethod
|
|
Packit Service |
af52df |
def setUpClass(cls):
|
|
Packit Service |
af52df |
unittest.TestCase.setUpClass()
|
|
Packit Service |
af52df |
cls.avail_locales = get_avail_locales()
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
@requires_locales({'en_US.utf8'})
|
|
Packit Service |
af52df |
def setUp(self):
|
|
Packit Service |
af52df |
locale.setlocale(locale.LC_ALL,'en_US.utf8')
|
|
Packit Service |
af52df |
self.addCleanup(self._clean_up)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def _clean_up(self):
|
|
Packit Service |
af52df |
locale.setlocale(locale.LC_ALL,'en_US.utf8')
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
# test operator functions
|
|
Packit Service |
af52df |
def testOperatorPlus(self):
|
|
Packit Service |
af52df |
result = Size("1000 B") + Size("100 B")
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 1100
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = Size("1000 B") + 10
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 1010
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = 10 + Size("1000 B")
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 1010
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B")
|
|
Packit Service |
af52df |
size1 += Size("100 B")
|
|
Packit Service |
af52df |
actual = size1.get_bytes()
|
|
Packit Service |
af52df |
expected = 200
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B")
|
|
Packit Service |
af52df |
size1 += 100
|
|
Packit Service |
af52df |
actual = size1.get_bytes()
|
|
Packit Service |
af52df |
expected = 200
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
# TODO shouldn't be the result int?
|
|
Packit Service |
af52df |
int1 = 10
|
|
Packit Service |
af52df |
int1 += Size("100 B")
|
|
Packit Service |
af52df |
actual = int1.get_bytes()
|
|
Packit Service |
af52df |
expected = 110
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B") + None
|
|
Packit Service |
af52df |
self.assertEqual(size1.get_bytes(), 100)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testOperatorMinus(self):
|
|
Packit Service |
af52df |
result = Size("1000 B") - Size("100 B")
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 900
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = Size("1000 B") - 10
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 990
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = 10 - Size("100 B")
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = -90
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B")
|
|
Packit Service |
af52df |
size1 -= Size("10 B")
|
|
Packit Service |
af52df |
actual = size1.get_bytes()
|
|
Packit Service |
af52df |
expected = 90
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B")
|
|
Packit Service |
af52df |
size1 -= 10
|
|
Packit Service |
af52df |
actual = size1.get_bytes()
|
|
Packit Service |
af52df |
expected = 90
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
# TODO shouldn't be the result int?
|
|
Packit Service |
af52df |
int1 = 1000
|
|
Packit Service |
af52df |
int1 -= Size("100 B")
|
|
Packit Service |
af52df |
actual = int1.get_bytes()
|
|
Packit Service |
af52df |
expected = 900
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("100 B") - None
|
|
Packit Service |
af52df |
self.assertEqual(size1.get_bytes(), 100)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testOperatorMul(self):
|
|
Packit Service |
af52df |
result = Size("4 B") * 3
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 12
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = 3 * Size("4 B")
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 12
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("4 B")
|
|
Packit Service |
af52df |
size1 *= 3
|
|
Packit Service |
af52df |
actual = size1.get_bytes()
|
|
Packit Service |
af52df |
expected = 12
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
int1 = 4
|
|
Packit Service |
af52df |
int1 *= Size("3 B")
|
|
Packit Service |
af52df |
actual = int1.get_bytes()
|
|
Packit Service |
af52df |
expected = 12
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testOperatorDiv(self):
|
|
Packit Service |
af52df |
actual = Size("100 B") / Size("10 B")
|
|
Packit Service |
af52df |
expected = Decimal("10")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("120 B") / Size("100 B")
|
|
Packit Service |
af52df |
expected = Decimal("1.2")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("120 B") // Size("100 B")
|
|
Packit Service |
af52df |
expected = Decimal("1")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("128 EiB") // Size("64 EiB")
|
|
Packit Service |
af52df |
expected = 2
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("100 B") / 10
|
|
Packit Service |
af52df |
expected = Decimal("10")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("120 B") / 100
|
|
Packit Service |
af52df |
expected = Decimal("1.2")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
actual = Size("128 EiB") // 2
|
|
Packit Service |
af52df |
expected = Size("64 EiB")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
result = Size("120 B") // 100
|
|
Packit Service |
af52df |
actual = result.get_bytes()
|
|
Packit Service |
af52df |
expected = 1
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("120 B")
|
|
Packit Service |
af52df |
size1 /= Size("100 B")
|
|
Packit Service |
af52df |
actual = size1
|
|
Packit Service |
af52df |
expected = Decimal("1.2")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("120 B")
|
|
Packit Service |
af52df |
size1 /= 100
|
|
Packit Service |
af52df |
actual = size1
|
|
Packit Service |
af52df |
expected = Decimal("1.2")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("120 B")
|
|
Packit Service |
af52df |
size1 //= Size("100 B")
|
|
Packit Service |
af52df |
actual = size1
|
|
Packit Service |
af52df |
expected = Decimal("1")
|
|
Packit Service |
af52df |
self.assertEqual(actual, expected)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testDivMod(self):
|
|
Packit Service |
af52df |
size1 = Size("120 B")
|
|
Packit Service |
af52df |
q, mod = divmod(size1, Size("100 B"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertEqual(q, 1)
|
|
Packit Service |
af52df |
self.assertEqual(mod, Size("20 B"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("250 MiB")
|
|
Packit Service |
af52df |
q, mod = divmod(size1, Size("100 MiB"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertEqual(q, 2)
|
|
Packit Service |
af52df |
self.assertEqual(mod, Size("50 MiB"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("10 GiB") + Size("5 GiB")
|
|
Packit Service |
af52df |
q, mod = divmod(size1, 7)
|
|
Packit Service |
af52df |
self.assertEqual(q, 2300875337)
|
|
Packit Service |
af52df |
self.assertEqual(mod, 1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testEquality(self):
|
|
Packit Service |
af52df |
size1 = Size("1 GiB")
|
|
Packit Service |
af52df |
size2 = Size("2 GiB")
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertTrue(size1 == size1)
|
|
Packit Service |
af52df |
self.assertTrue(size2 == size2)
|
|
Packit Service |
af52df |
self.assertFalse(size1 == size2)
|
|
Packit Service |
af52df |
self.assertFalse(size2 == size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertFalse(size1 == None)
|
|
Packit Service |
af52df |
self.assertFalse(size1 == 0)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size3 = Size(0)
|
|
Packit Service |
af52df |
self.assertTrue(size3 == 0)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testCompare(self):
|
|
Packit Service |
af52df |
size1 = Size("1 GiB")
|
|
Packit Service |
af52df |
size2 = Size("2 GiB")
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertTrue(size2 > size1)
|
|
Packit Service |
af52df |
self.assertFalse(size1 > size2)
|
|
Packit Service |
af52df |
self.assertTrue(size2 >= size1)
|
|
Packit Service |
af52df |
self.assertFalse(size1 >= size2)
|
|
Packit Service |
af52df |
self.assertTrue(size1 >= size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertFalse(size2 < size1)
|
|
Packit Service |
af52df |
self.assertTrue(size1 < size2)
|
|
Packit Service |
af52df |
self.assertFalse(size2 <= size1)
|
|
Packit Service |
af52df |
self.assertTrue(size1 <= size2)
|
|
Packit Service |
af52df |
self.assertTrue(size1 <= size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertTrue(size1 > None)
|
|
Packit Service |
af52df |
self.assertTrue(size1 >= None)
|
|
Packit Service |
af52df |
self.assertFalse(size1 < None)
|
|
Packit Service |
af52df |
self.assertFalse(size1 <= None)
|
|
Packit Service |
af52df |
self.assertFalse(size1 == None)
|
|
Packit Service |
af52df |
self.assertTrue(size1 != None)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size3 = Size(0)
|
|
Packit Service |
af52df |
self.assertTrue(size3 > None)
|
|
Packit Service |
af52df |
self.assertFalse(size3 < None)
|
|
Packit Service |
af52df |
self.assertTrue(size3 != None)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testBool(self):
|
|
Packit Service |
af52df |
size1 = Size("1 GiB")
|
|
Packit Service |
af52df |
size2 = Size(0)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertTrue(size1)
|
|
Packit Service |
af52df |
self.assertFalse(size2)
|
|
Packit Service |
af52df |
#enddef
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testAbs(self):
|
|
Packit Service |
af52df |
size1 = Size("1 GiB")
|
|
Packit Service |
af52df |
self.assertEqual(size1, abs(size1))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size2 = Size("-2 GiB")
|
|
Packit Service |
af52df |
self.assertEqual(size2, -1 * abs(size2))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testNeg(self):
|
|
Packit Service |
af52df |
size1 = Size("1 KiB")
|
|
Packit Service |
af52df |
self.assertEqual(-1024, -size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size1 = Size("-1 KiB")
|
|
Packit Service |
af52df |
self.assertEqual(1024, -size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testDeepCopy(self):
|
|
Packit Service |
af52df |
size1 = Size("1 GiB")
|
|
Packit Service |
af52df |
size2 = copy.deepcopy(size1)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
self.assertIsNot(size1, size2)
|
|
Packit Service |
af52df |
self.assertEqual(size1, size2)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
def testHashable(self):
|
|
Packit Service |
af52df |
size = Size("1 KiB")
|
|
Packit Service |
af52df |
hs = hash(size)
|
|
Packit Service |
af52df |
self.assertIsNotNone(hs)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
size_set = set((Size("1 KiB"), Size("1 KiB"), Size("1 KiB"), Size("2 KiB"), Size(0)))
|
|
Packit Service |
af52df |
self.assertEqual(len(size_set), 3)
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
@requires_locales({'cs_CZ.UTF-8', 'ps_AF.UTF-8', 'en_US.UTF-8'})
|
|
Packit Service |
af52df |
def testConvertTo(self):
|
|
Packit Service |
af52df |
size = Size("1.5 KiB")
|
|
Packit Service |
af52df |
conv = size.convert_to("KiB")
|
|
Packit Service |
af52df |
self.assertEqual(conv, Decimal("1.5"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
locale.setlocale(locale.LC_ALL,'cs_CZ.UTF-8')
|
|
Packit Service |
af52df |
size = Size("1.5 KiB")
|
|
Packit Service |
af52df |
conv = size.convert_to("KiB")
|
|
Packit Service |
af52df |
self.assertEqual(conv, Decimal("1.5"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
# this persian locale uses a two-byte unicode character for the radix
|
|
Packit Service |
af52df |
locale.setlocale(locale.LC_ALL, 'ps_AF.UTF-8')
|
|
Packit Service |
af52df |
size = Size("1.5 KiB")
|
|
Packit Service |
af52df |
conv = size.convert_to("KiB")
|
|
Packit Service |
af52df |
self.assertEqual(conv, Decimal("1.5"))
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
locale.setlocale(locale.LC_ALL,'en_US.UTF-8')
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
#endclass
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
# script entry point
|
|
Packit Service |
af52df |
if __name__=='__main__':
|
|
Packit Service |
af52df |
unittest.main()
|
|
Packit Service |
af52df |
#endif
|
|
Packit Service |
af52df |
|
|
Packit Service |
af52df |
|