Skip to content
Snippets Groups Projects
test_duration.py 2.60 KiB
import unittest

from duration import Duration

class TestDuration(unittest.TestCase):

    def test_formatting(self):
        d = Duration(1)
        self.assertEqual(format(d, '%1S'), '1')
        self.assertEqual(format(d, '%S'), '01')
        self.assertEqual(format(d, '%H:%M:%S'), '00:00:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '0:00:00:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '0 days 00:00:01')

        d = Duration(60 + 1)
        self.assertEqual(format(d, '%S'), '61')
        self.assertEqual(format(d, '%H:%M:%S'), '00:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '0:00:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '0 days 00:01:01')

        d = Duration(3600 + 60 + 1)
        self.assertEqual(format(d, '%S'), '3661')
        self.assertEqual(format(d, '%H:%M:%S'), '01:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '0:01:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '0 days 01:01:01')

        d = Duration(86400 + 3600 + 60 + 1)
        self.assertEqual(format(d, '%S'), '90061')
        self.assertEqual(format(d, '%H:%M:%S'), '25:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '1:01:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '1 days 01:01:01')

        d = Duration(-1)
        self.assertEqual(format(d, '%S'), '-1')
        self.assertEqual(format(d, '%H:%M:%S'), '-0:00:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '-0:00:00:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '-0 days 00:00:01')

        d = Duration(-(60 + 1))
        self.assertEqual(format(d, '%S'), '-61')
        self.assertEqual(format(d, '%H:%M:%S'), '-0:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '-0:00:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '-0 days 00:01:01')

        d = Duration(-(3600 + 60 + 1))
        self.assertEqual(format(d, '%S'), '-3661')
        self.assertEqual(format(d, '%H:%M:%S'), '-1:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '-0:01:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '-0 days 01:01:01')

        d = Duration(-(86400 + 3600 + 60 + 1))
        self.assertEqual(format(d, '%S'), '-90061')
        self.assertEqual(format(d, '%H:%M:%S'), '-25:01:01')
        self.assertEqual(format(d, '%D:%H:%M:%S'), '-1:01:01:01')
        self.assertEqual(format(d, '%D days %02H:%02M:%02S'), '-1 days 01:01:01')

    def test_formatting_default(self):
        self.assertEqual(format(Duration( 3661)),  '01h01')
        self.assertEqual(format(Duration(-3661)), '-01h01')