summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorLarry Hastings <larry@hastings.org>2012-05-05 23:54:29 (GMT)
committerLarry Hastings <larry@hastings.org>2012-05-05 23:54:29 (GMT)
commitfaf91e75ab287ae6c377b05b7eb91d7f5274fbc5 (patch)
tree5fd9ed01b383d818d84091f91efa22ce48b1bccb /Lib/test
parent6b03f2ce45785190c6a8da271199ff724ba559d8 (diff)
downloadcpython-faf91e75ab287ae6c377b05b7eb91d7f5274fbc5.zip
cpython-faf91e75ab287ae6c377b05b7eb91d7f5274fbc5.tar.gz
cpython-faf91e75ab287ae6c377b05b7eb91d7f5274fbc5.tar.bz2
Issue #14705: Add 'p' format character to PyArg_ParseTuple* for bool support.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_getargs2.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/test_getargs2.py b/Lib/test/test_getargs2.py
index fe1e7ce..48ca94e 100644
--- a/Lib/test/test_getargs2.py
+++ b/Lib/test/test_getargs2.py
@@ -214,6 +214,36 @@ class LongLong_TestCase(unittest.TestCase):
self.assertEqual(VERY_LARGE & ULLONG_MAX, getargs_K(VERY_LARGE))
+class Paradox:
+ "This statement is false."
+ def __bool__(self):
+ raise NotImplementedError
+
+class Boolean_TestCase(unittest.TestCase):
+ def test_p(self):
+ from _testcapi import getargs_p
+ self.assertEqual(0, getargs_p(False))
+ self.assertEqual(0, getargs_p(None))
+ self.assertEqual(0, getargs_p(0))
+ self.assertEqual(0, getargs_p(0.0))
+ self.assertEqual(0, getargs_p(0j))
+ self.assertEqual(0, getargs_p(''))
+ self.assertEqual(0, getargs_p(()))
+ self.assertEqual(0, getargs_p([]))
+ self.assertEqual(0, getargs_p({}))
+
+ self.assertEqual(1, getargs_p(True))
+ self.assertEqual(1, getargs_p(1))
+ self.assertEqual(1, getargs_p(1.0))
+ self.assertEqual(1, getargs_p(1j))
+ self.assertEqual(1, getargs_p('x'))
+ self.assertEqual(1, getargs_p((1,)))
+ self.assertEqual(1, getargs_p([1]))
+ self.assertEqual(1, getargs_p({1:2}))
+ self.assertEqual(1, getargs_p(unittest.TestCase))
+
+ self.assertRaises(NotImplementedError, getargs_p, Paradox())
+
class Tuple_TestCase(unittest.TestCase):
def test_tuple(self):
@@ -510,6 +540,7 @@ def test_main():
tests = [
Signed_TestCase,
Unsigned_TestCase,
+ Boolean_TestCase,
Tuple_TestCase,
Keywords_TestCase,
KeywordOnly_TestCase,