summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorRUANG (James Roy) <longjinyii@outlook.com>2024-11-12 13:18:06 (GMT)
committerGitHub <noreply@github.com>2024-11-12 13:18:06 (GMT)
commit8ff7efb46d34ee454239bd86ff5136f386b9749b (patch)
tree0dae8e79e19bbec4ea0546670604b4ef0f8a590b /Lib/test
parentabb90ba46c597a1b192027e914ad312dd62d2462 (diff)
downloadcpython-8ff7efb46d34ee454239bd86ff5136f386b9749b.zip
cpython-8ff7efb46d34ee454239bd86ff5136f386b9749b.tar.gz
cpython-8ff7efb46d34ee454239bd86ff5136f386b9749b.tar.bz2
gh-126061: Add PyLong_IsPositive/Zero/Negative() functions (#126065)
Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com> Co-authored-by: Peter Bierma <zintensitydev@gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_capi/test_long.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/Lib/test/test_capi/test_long.py b/Lib/test/test_capi/test_long.py
index 925fccd..a770945 100644
--- a/Lib/test/test_capi/test_long.py
+++ b/Lib/test/test_capi/test_long.py
@@ -643,6 +643,51 @@ class LongTests(unittest.TestCase):
# CRASHES getsign(NULL)
+ def test_long_ispositive(self):
+ # Test PyLong_IsPositive()
+ ispositive = _testcapi.pylong_ispositive
+ self.assertEqual(ispositive(1), 1)
+ self.assertEqual(ispositive(123), 1)
+ self.assertEqual(ispositive(-1), 0)
+ self.assertEqual(ispositive(0), 0)
+ self.assertEqual(ispositive(True), 1)
+ self.assertEqual(ispositive(False), 0)
+ self.assertEqual(ispositive(IntSubclass(-1)), 0)
+ self.assertRaises(TypeError, ispositive, 1.0)
+ self.assertRaises(TypeError, ispositive, Index(123))
+
+ # CRASHES ispositive(NULL)
+
+ def test_long_isnegative(self):
+ # Test PyLong_IsNegative()
+ isnegative = _testcapi.pylong_isnegative
+ self.assertEqual(isnegative(1), 0)
+ self.assertEqual(isnegative(123), 0)
+ self.assertEqual(isnegative(-1), 1)
+ self.assertEqual(isnegative(0), 0)
+ self.assertEqual(isnegative(True), 0)
+ self.assertEqual(isnegative(False), 0)
+ self.assertEqual(isnegative(IntSubclass(-1)), 1)
+ self.assertRaises(TypeError, isnegative, 1.0)
+ self.assertRaises(TypeError, isnegative, Index(123))
+
+ # CRASHES isnegative(NULL)
+
+ def test_long_iszero(self):
+ # Test PyLong_IsZero()
+ iszero = _testcapi.pylong_iszero
+ self.assertEqual(iszero(1), 0)
+ self.assertEqual(iszero(-1), 0)
+ self.assertEqual(iszero(0), 1)
+ self.assertEqual(iszero(True), 0)
+ self.assertEqual(iszero(False), 1)
+ self.assertEqual(iszero(IntSubclass(-1)), 0)
+ self.assertEqual(iszero(IntSubclass(0)), 1)
+ self.assertRaises(TypeError, iszero, 1.0)
+ self.assertRaises(TypeError, iszero, Index(123))
+
+ # CRASHES iszero(NULL)
+
def test_long_asint32(self):
# Test PyLong_AsInt32() and PyLong_FromInt32()
to_int32 = _testlimitedcapi.pylong_asint32