Issue #28295: Fixed the documentation and added tests for PyUnicode_AsUCS4().

Original patch by Xiang Zhang.
This commit is contained in:
Serhiy Storchaka 2016-10-02 21:29:26 +03:00
parent 63b5b6fd45
commit cc164232aa
4 changed files with 50 additions and 2 deletions

View file

@ -2687,6 +2687,23 @@ class CAPITest(unittest.TestCase):
self.assertEqual(size, nchar)
self.assertEqual(wchar, nonbmp + '\0')
# Test PyUnicode_AsUCS4()
@support.cpython_only
def test_asucs4(self):
from _testcapi import unicode_asucs4
for s in ['abc', '\xa1\xa2', '\u4f60\u597d', 'a\U0001f600',
'a\ud800b\udfffc', '\ud834\udd1e']:
l = len(s)
self.assertEqual(unicode_asucs4(s, l, 1), s+'\0')
self.assertEqual(unicode_asucs4(s, l, 0), s+'\uffff')
self.assertEqual(unicode_asucs4(s, l+1, 1), s+'\0\uffff')
self.assertEqual(unicode_asucs4(s, l+1, 0), s+'\0\uffff')
self.assertRaises(SystemError, unicode_asucs4, s, l-1, 1)
self.assertRaises(SystemError, unicode_asucs4, s, l-2, 0)
s = '\0'.join([s, s])
self.assertEqual(unicode_asucs4(s, len(s), 1), s+'\0')
self.assertEqual(unicode_asucs4(s, len(s), 0), s+'\uffff')
@support.cpython_only
def test_encode_decimal(self):
from _testcapi import unicode_encodedecimal