]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fixes #23521: Corrected pure python implementation of timedelta division.
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Sat, 28 Feb 2015 15:44:47 +0000 (10:44 -0500)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Sat, 28 Feb 2015 15:44:47 +0000 (10:44 -0500)
 * Eliminated OverflowError from timedelta * float for some floats;
 * Corrected rounding in timedlta true division.

1  2 
Lib/datetime.py
Lib/test/datetimetester.py
Misc/NEWS

diff --cc Lib/datetime.py
Simple merge
index 7935cf23204d09fa0976464e52a4ba95c4445cba,8e48b9fd539e79592fa83b93d8f1d5e6e88f09d1..40ef1ba57f710fc7a7694e49b3bc23ca71bdd28e
@@@ -51,17 -50,33 +51,44 @@@ class TestModule(unittest.TestCase)
          self.assertEqual(datetime.MINYEAR, 1)
          self.assertEqual(datetime.MAXYEAR, 9999)
  
 +    def test_name_cleanup(self):
 +        if '_Fast' not in str(self):
 +            return
 +        datetime = datetime_module
 +        names = set(name for name in dir(datetime)
 +                    if not name.startswith('__') and not name.endswith('__'))
 +        allowed = set(['MAXYEAR', 'MINYEAR', 'date', 'datetime',
 +                       'datetime_CAPI', 'time', 'timedelta', 'timezone',
 +                       'tzinfo'])
 +        self.assertEqual(names - allowed, set([]))
 +
+     def test_divide_and_round(self):
+         if '_Fast' in str(self):
+             return
+         dar = datetime_module._divide_and_round
+         self.assertEqual(dar(-10, -3), 3)
+         self.assertEqual(dar(5, -2), -2)
+         # four cases: (2 signs of a) x (2 signs of b)
+         self.assertEqual(dar(7, 3), 2)
+         self.assertEqual(dar(-7, 3), -2)
+         self.assertEqual(dar(7, -3), -2)
+         self.assertEqual(dar(-7, -3), 2)
+         # ties to even - eight cases:
+         # (2 signs of a) x (2 signs of b) x (even / odd quotient)
+         self.assertEqual(dar(10, 4), 2)
+         self.assertEqual(dar(-10, 4), -2)
+         self.assertEqual(dar(10, -4), -2)
+         self.assertEqual(dar(-10, -4), 2)
+         self.assertEqual(dar(6, 4), 2)
+         self.assertEqual(dar(-6, 4), -2)
+         self.assertEqual(dar(6, -4), -2)
+         self.assertEqual(dar(-6, -4), 2)
  #############################################################################
  # tzinfo tests
  
diff --cc Misc/NEWS
Simple merge