summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_long.py
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2009-01-12 20:49:19 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2009-01-12 20:49:19 (GMT)
commite5e298f8755c475e78f8cfc71ee0ea03c6674406 (patch)
treee5d854149357c5207ce32822ff2dee49542eef41 /Lib/test/test_long.py
parent7c2b66cc02a1c5e3433885640b7d4bd9e0ca5b8a (diff)
downloadcpython-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.py22
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):