mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
gh-86069: Add more PyNumber_InPlacePower() tests (GH-130111)
Test it with the third argument.
This commit is contained in:
parent
ae30646089
commit
cfe41037eb
1 changed files with 35 additions and 1 deletions
|
|
@ -205,8 +205,9 @@ class CAPITest(unittest.TestCase):
|
|||
self.assertRaises(MemoryError, inplacemultiply, [1, 2], PY_SSIZE_T_MAX//2 + 1)
|
||||
|
||||
def test_misc_power(self):
|
||||
# PyNumber_Power()
|
||||
# PyNumber_Power(), PyNumber_InPlacePower()
|
||||
power = _testcapi.number_power
|
||||
inplacepower = _testcapi.number_inplacepower
|
||||
|
||||
class HasPow(WithDunder):
|
||||
methname = '__pow__'
|
||||
|
|
@ -216,6 +217,39 @@ class CAPITest(unittest.TestCase):
|
|||
self.assertRaises(TypeError, power, 4, 11, 1.25)
|
||||
self.assertRaises(TypeError, power, 4, 11, HasPow.with_val(NotImplemented))
|
||||
self.assertRaises(TypeError, power, 4, 11, object())
|
||||
self.assertEqual(inplacepower(4, 11, 5), pow(4, 11, 5))
|
||||
self.assertRaises(TypeError, inplacepower, 4, 11, 1.25)
|
||||
self.assertRaises(TypeError, inplacepower, 4, 11, object())
|
||||
|
||||
class X:
|
||||
def __pow__(*args):
|
||||
return args
|
||||
|
||||
x = X()
|
||||
self.assertEqual(power(x, 11), (x, 11))
|
||||
self.assertEqual(inplacepower(x, 11), (x, 11))
|
||||
self.assertEqual(power(x, 11, 5), (x, 11, 5))
|
||||
self.assertEqual(inplacepower(x, 11, 5), (x, 11, 5))
|
||||
|
||||
class X:
|
||||
def __rpow__(*args):
|
||||
return args
|
||||
|
||||
x = X()
|
||||
self.assertEqual(power(4, x), (x, 4))
|
||||
self.assertEqual(inplacepower(4, x), (x, 4))
|
||||
# XXX: Three-arg power doesn't use __rpow__.
|
||||
self.assertRaises(TypeError, power, 4, x, 5)
|
||||
self.assertRaises(TypeError, inplacepower, 4, x, 5)
|
||||
|
||||
class X:
|
||||
def __ipow__(*args):
|
||||
return args
|
||||
|
||||
x = X()
|
||||
self.assertEqual(inplacepower(x, 11), (x, 11))
|
||||
# XXX: In-place power doesn't pass the third arg to __ipow__.
|
||||
self.assertEqual(inplacepower(x, 11, 5), (x, 11))
|
||||
|
||||
def test_long(self):
|
||||
# Test PyNumber_Long()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue