From: Alexander Belopolsky Date: Sat, 28 Feb 2015 15:44:47 +0000 (-0500) Subject: Fixes #23521: Corrected pure python implementation of timedelta division. X-Git-Tag: v3.5.0a2~68 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=184291aeb74249e644b3df581d240811e4b8a6e2;p=thirdparty%2FPython%2Fcpython.git Fixes #23521: Corrected pure python implementation of timedelta division. * Eliminated OverflowError from timedelta * float for some floats; * Corrected rounding in timedlta true division. --- 184291aeb74249e644b3df581d240811e4b8a6e2 diff --cc Lib/test/datetimetester.py index 7935cf23204d,8e48b9fd539e..40ef1ba57f71 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@@ -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