diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2010-04-20 22:32:49 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2010-04-20 22:32:49 (GMT) |
commit | 7c186e2a18bf174afd5cccc8c35b7167d05f7e2a (patch) | |
tree | 1ba75e9cb85d4ab1e0320d3636c1db90d5c8f97e /Lib/test/test_datetime.py | |
parent | 50eb60e6bfedbdad2dda30fa5ce7fe3ce83f7748 (diff) | |
download | cpython-7c186e2a18bf174afd5cccc8c35b7167d05f7e2a.zip cpython-7c186e2a18bf174afd5cccc8c35b7167d05f7e2a.tar.gz cpython-7c186e2a18bf174afd5cccc8c35b7167d05f7e2a.tar.bz2 |
Issue #2706: Add support for dividing a timedelta by another timedelta.
Adds support for the three division operations:
- timedelta / timedelta -> float
- timedelta // timedelta -> int
- timedelta % timedelta -> timedelta
also adds support for divmod(timedelta, timedelta).
Patch by Victor Stinner, adapted for py3k and extended by Alexander
Belopolsky.
Diffstat (limited to 'Lib/test/test_datetime.py')
-rw-r--r-- | Lib/test/test_datetime.py | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py index 4818482..a5b53fb 100644 --- a/Lib/test/test_datetime.py +++ b/Lib/test/test_datetime.py @@ -7,7 +7,7 @@ import os import pickle import unittest -from operator import lt, le, gt, ge, eq, ne +from operator import lt, le, gt, ge, eq, ne, truediv, floordiv, mod from test import support @@ -469,6 +469,58 @@ class TestTimeDelta(HarmlessMixedComparison, unittest.TestCase): self.assertEqual(str(t3), str(t4)) self.assertEqual(t4.as_hours(), -1) + def test_division(self): + t = timedelta(hours=1, minutes=24, seconds=19) + second = timedelta(seconds=1) + self.assertEqual(t / second, 5059.0) + self.assertEqual(t // second, 5059) + + t = timedelta(minutes=2, seconds=30) + minute = timedelta(minutes=1) + self.assertEqual(t / minute, 2.5) + self.assertEqual(t // minute, 2) + + zerotd = timedelta(0) + self.assertRaises(ZeroDivisionError, truediv, t, zerotd) + self.assertRaises(ZeroDivisionError, floordiv, t, zerotd) + + self.assertRaises(TypeError, truediv, t, 2) + # note: floor division of a timedelta by an integer *is* + # currently permitted. + + def test_remainder(self): + t = timedelta(minutes=2, seconds=30) + minute = timedelta(minutes=1) + r = t % minute + self.assertEqual(r, timedelta(seconds=30)) + + t = timedelta(minutes=-2, seconds=30) + r = t % minute + self.assertEqual(r, timedelta(seconds=30)) + + zerotd = timedelta(0) + self.assertRaises(ZeroDivisionError, mod, t, zerotd) + + self.assertRaises(TypeError, mod, t, 10) + + def test_divmod(self): + t = timedelta(minutes=2, seconds=30) + minute = timedelta(minutes=1) + q, r = divmod(t, minute) + self.assertEqual(q, 2) + self.assertEqual(r, timedelta(seconds=30)) + + t = timedelta(minutes=-2, seconds=30) + q, r = divmod(t, minute) + self.assertEqual(q, -2) + self.assertEqual(r, timedelta(seconds=30)) + + zerotd = timedelta(0) + self.assertRaises(ZeroDivisionError, divmod, t, zerotd) + + self.assertRaises(TypeError, divmod, t, 10) + + ############################################################################# # date tests |