diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2009-01-12 20:49:19 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2009-01-12 20:49:19 (GMT) |
commit | e5e298f8755c475e78f8cfc71ee0ea03c6674406 (patch) | |
tree | e5d854149357c5207ce32822ff2dee49542eef41 /Lib/test/test_long.py | |
parent | 7c2b66cc02a1c5e3433885640b7d4bd9e0ca5b8a (diff) | |
download | cpython-e5e298f8755c475e78f8cfc71ee0ea03c6674406.zip cpython-e5e298f8755c475e78f8cfc71ee0ea03c6674406.tar.gz cpython-e5e298f8755c475e78f8cfc71ee0ea03c6674406.tar.bz2 |
Issue #4910 (1st patch of a series): fix int() and the corresponding
PyNumber_Int/PyNumber_Long API function so that it no longer attempts
to call the __long__ method for conversion. Only the __int__ and __trunc__
methods are used. (This removes a major remaining use of the nb_long
slot from the Python 3.x core.)
Thanks Benjamin for review.
Diffstat (limited to 'Lib/test/test_long.py')
-rw-r--r-- | Lib/test/test_long.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index cbd0b2b..ed8c886 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -367,7 +367,7 @@ class LongTest(unittest.TestCase): def test_conversion(self): - # Test __long__() + # Test __int__() class ClassicMissingMethods: pass self.assertRaises(TypeError, int, ClassicMissingMethods()) @@ -410,18 +410,32 @@ class LongTest(unittest.TestCase): class Classic: pass for base in (object, Classic): - class LongOverridesTrunc(base): - def __long__(self): + class IntOverridesTrunc(base): + def __int__(self): return 42 def __trunc__(self): return -12 - self.assertEqual(int(LongOverridesTrunc()), 42) + self.assertEqual(int(IntOverridesTrunc()), 42) class JustTrunc(base): def __trunc__(self): return 42 self.assertEqual(int(JustTrunc()), 42) + class JustLong(base): + # test that __long__ no longer used in 3.x + def __long__(self): + return 42 + self.assertRaises(TypeError, int, JustLong()) + + class LongTrunc(base): + # __long__ should be ignored in 3.x + def __long__(self): + return 42 + def __trunc__(self): + return 1729 + self.assertEqual(int(LongTrunc()), 1729) + for trunc_result_base in (object, Classic): class Integral(trunc_result_base): def __int__(self): |