diff options
| author | Marc Tamlyn <marc.tamlyn@gmail.com> | 2014-07-24 13:57:24 +0100 |
|---|---|---|
| committer | Marc Tamlyn <marc.tamlyn@gmail.com> | 2014-12-20 18:28:29 +0000 |
| commit | 57554442fe3e209c135e15dda4ea45123e579e58 (patch) | |
| tree | 0ef2cb0e3048d13b82e4c7e81192df6124556a44 /tests/utils_tests/test_duration.py | |
| parent | a3d96bee36040975ded8e3bf02e33e48d06f1f16 (diff) | |
Fixed #2443 -- Added DurationField.
A field for storing periods of time - modeled in Python by timedelta. It
is stored in the native interval data type on PostgreSQL and as a bigint
of microseconds on other backends.
Also includes significant changes to the internals of time related maths
in expressions, including the removal of DateModifierNode.
Thanks to Tim and Josh in particular for reviews.
Diffstat (limited to 'tests/utils_tests/test_duration.py')
| -rw-r--r-- | tests/utils_tests/test_duration.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/utils_tests/test_duration.py b/tests/utils_tests/test_duration.py new file mode 100644 index 0000000000..559d2ef16f --- /dev/null +++ b/tests/utils_tests/test_duration.py @@ -0,0 +1,43 @@ +import datetime +import unittest + +from django.utils.dateparse import parse_duration +from django.utils.duration import duration_string + + +class TestDurationString(unittest.TestCase): + + def test_simple(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5) + self.assertEqual(duration_string(duration), '01:03:05') + + def test_days(self): + duration = datetime.timedelta(days=1, hours=1, minutes=3, seconds=5) + self.assertEqual(duration_string(duration), '1 01:03:05') + + def test_microseconds(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5, microseconds=12345) + self.assertEqual(duration_string(duration), '01:03:05.012345') + + def test_negative(self): + duration = datetime.timedelta(days=-1, hours=1, minutes=3, seconds=5) + self.assertEqual(duration_string(duration), '-1 01:03:05') + + +class TestParseDurationRoundtrip(unittest.TestCase): + + def test_simple(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_string(duration)), duration) + + def test_days(self): + duration = datetime.timedelta(days=1, hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_string(duration)), duration) + + def test_microseconds(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5, microseconds=12345) + self.assertEqual(parse_duration(duration_string(duration)), duration) + + def test_negative(self): + duration = datetime.timedelta(days=-1, hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_string(duration)), duration) |
