mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-15 09:19:49 +00:00
150 lines
5.8 KiB
Python
150 lines
5.8 KiB
Python
"""
|
|
Tests for allmydata.util.abbreviate.
|
|
|
|
Ported to Python 3.
|
|
"""
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
from future.utils import PY2
|
|
if PY2:
|
|
from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401
|
|
|
|
from datetime import timedelta
|
|
|
|
from twisted.trial import unittest
|
|
|
|
from allmydata.util import abbreviate
|
|
|
|
|
|
class Abbreviate(unittest.TestCase):
|
|
def test_abbrev_time_1s(self):
|
|
diff = timedelta(seconds=1)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('1 second ago', s)
|
|
|
|
def test_abbrev_time_25s(self):
|
|
diff = timedelta(seconds=25)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('25 seconds ago', s)
|
|
|
|
def test_abbrev_time_future_5_minutes(self):
|
|
diff = timedelta(minutes=-5)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('5 minutes in the future', s)
|
|
|
|
def test_abbrev_time_hours(self):
|
|
diff = timedelta(hours=4)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('4 hours ago', s)
|
|
|
|
def test_abbrev_time_day(self):
|
|
diff = timedelta(hours=49) # must be more than 2 days
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('2 days ago', s)
|
|
|
|
def test_abbrev_time_month(self):
|
|
diff = timedelta(days=91)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('3 months ago', s)
|
|
|
|
def test_abbrev_time_year(self):
|
|
diff = timedelta(weeks=(5 * 52) + 1)
|
|
s = abbreviate.abbreviate_time(diff)
|
|
self.assertEqual('5 years ago', s)
|
|
|
|
def test_time(self):
|
|
a = abbreviate.abbreviate_time
|
|
self.failUnlessEqual(a(None), "unknown")
|
|
self.failUnlessEqual(a(0), "0 seconds")
|
|
self.failUnlessEqual(a(1), "1 second")
|
|
self.failUnlessEqual(a(2), "2 seconds")
|
|
self.failUnlessEqual(a(119), "119 seconds")
|
|
MIN = 60
|
|
self.failUnlessEqual(a(2*MIN), "2 minutes")
|
|
self.failUnlessEqual(a(60*MIN), "60 minutes")
|
|
self.failUnlessEqual(a(179*MIN), "179 minutes")
|
|
HOUR = 60*MIN
|
|
self.failUnlessEqual(a(180*MIN), "3 hours")
|
|
self.failUnlessEqual(a(4*HOUR), "4 hours")
|
|
DAY = 24*HOUR
|
|
MONTH = 30*DAY
|
|
self.failUnlessEqual(a(2*DAY), "2 days")
|
|
self.failUnlessEqual(a(2*MONTH), "2 months")
|
|
YEAR = 365*DAY
|
|
self.failUnlessEqual(a(5*YEAR), "5 years")
|
|
|
|
def test_space(self):
|
|
tests_si = [(None, "unknown"),
|
|
(0, "0 B"),
|
|
(1, "1 B"),
|
|
(999, "999 B"),
|
|
(1000, "1000 B"),
|
|
(1023, "1023 B"),
|
|
(1024, "1.02 kB"),
|
|
(20*1000, "20.00 kB"),
|
|
(1024*1024, "1.05 MB"),
|
|
(1000*1000, "1.00 MB"),
|
|
(1000*1000*1000, "1.00 GB"),
|
|
(1000*1000*1000*1000, "1.00 TB"),
|
|
(1000*1000*1000*1000*1000, "1.00 PB"),
|
|
(1000*1000*1000*1000*1000*1000, "1.00 EB"),
|
|
(1234567890123456789, "1.23 EB"),
|
|
]
|
|
for (x, expected) in tests_si:
|
|
got = abbreviate.abbreviate_space(x, SI=True)
|
|
self.failUnlessEqual(got, expected)
|
|
|
|
tests_base1024 = [(None, "unknown"),
|
|
(0, "0 B"),
|
|
(1, "1 B"),
|
|
(999, "999 B"),
|
|
(1000, "1000 B"),
|
|
(1023, "1023 B"),
|
|
(1024, "1.00 kiB"),
|
|
(20*1024, "20.00 kiB"),
|
|
(1000*1000, "976.56 kiB"),
|
|
(1024*1024, "1.00 MiB"),
|
|
(1024*1024*1024, "1.00 GiB"),
|
|
(1024*1024*1024*1024, "1.00 TiB"),
|
|
(1000*1000*1000*1000*1000, "909.49 TiB"),
|
|
(1024*1024*1024*1024*1024, "1.00 PiB"),
|
|
(1024*1024*1024*1024*1024*1024, "1.00 EiB"),
|
|
(1234567890123456789, "1.07 EiB"),
|
|
]
|
|
for (x, expected) in tests_base1024:
|
|
got = abbreviate.abbreviate_space(x, SI=False)
|
|
self.failUnlessEqual(got, expected)
|
|
|
|
self.failUnlessEqual(abbreviate.abbreviate_space_both(1234567),
|
|
"(1.23 MB, 1.18 MiB)")
|
|
|
|
def test_parse_space(self):
|
|
p = abbreviate.parse_abbreviated_size
|
|
self.failUnlessEqual(p(""), None)
|
|
self.failUnlessEqual(p(None), None)
|
|
self.failUnlessEqual(p("123"), 123)
|
|
self.failUnlessEqual(p("123B"), 123)
|
|
self.failUnlessEqual(p("2K"), 2000)
|
|
self.failUnlessEqual(p("2kb"), 2000)
|
|
self.failUnlessEqual(p("2KiB"), 2048)
|
|
self.failUnlessEqual(p("10MB"), 10*1000*1000)
|
|
self.failUnlessEqual(p("10MiB"), 10*1024*1024)
|
|
self.failUnlessEqual(p("5G"), 5*1000*1000*1000)
|
|
self.failUnlessEqual(p("4GiB"), 4*1024*1024*1024)
|
|
self.failUnlessEqual(p("3TB"), 3*1000*1000*1000*1000)
|
|
self.failUnlessEqual(p("3TiB"), 3*1024*1024*1024*1024)
|
|
self.failUnlessEqual(p("6PB"), 6*1000*1000*1000*1000*1000)
|
|
self.failUnlessEqual(p("6PiB"), 6*1024*1024*1024*1024*1024)
|
|
self.failUnlessEqual(p("9EB"), 9*1000*1000*1000*1000*1000*1000)
|
|
self.failUnlessEqual(p("9EiB"), 9*1024*1024*1024*1024*1024*1024)
|
|
|
|
e = self.failUnlessRaises(ValueError, p, "12 cubits")
|
|
self.failUnlessIn("12 cubits", str(e))
|
|
e = self.failUnlessRaises(ValueError, p, "1 BB")
|
|
self.failUnlessIn("1 BB", str(e))
|
|
e = self.failUnlessRaises(ValueError, p, "fhtagn")
|
|
self.failUnlessIn("fhtagn", str(e))
|