gh-119182: Add PyUnicodeWriter_WriteUCS4() function (#120849)

This commit is contained in:
Victor Stinner 2024-06-24 17:40:39 +02:00 committed by GitHub
parent a47abdb45d
commit 2e157851e3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 131 additions and 6 deletions

View file

@ -1826,8 +1826,42 @@ class PyUnicodeWriterTest(unittest.TestCase):
writer.write_widechar("latin1=\xE9")
writer.write_widechar("-")
writer.write_widechar("euro=\u20AC")
writer.write_char("-")
writer.write_widechar("max=\U0010ffff")
writer.write_char('.')
self.assertEqual(writer.finish(), "latin1=\xE9-euro=\u20AC.")
self.assertEqual(writer.finish(),
"latin1=\xE9-euro=\u20AC-max=\U0010ffff.")
def test_ucs4(self):
writer = self.create_writer(0)
writer.write_ucs4("ascii IGNORED", 5)
writer.write_char("-")
writer.write_ucs4("latin1=\xe9", 8)
writer.write_char("-")
writer.write_ucs4("euro=\u20ac", 6)
writer.write_char("-")
writer.write_ucs4("max=\U0010ffff", 5)
writer.write_char(".")
self.assertEqual(writer.finish(),
"ascii-latin1=\xE9-euro=\u20AC-max=\U0010ffff.")
# Test some special characters
writer = self.create_writer(0)
# Lone surrogate character
writer.write_ucs4("lone\uDC80", 5)
writer.write_char("-")
# Surrogate pair
writer.write_ucs4("pair\uDBFF\uDFFF", 5)
writer.write_char("-")
writer.write_ucs4("null[\0]", 7)
self.assertEqual(writer.finish(),
"lone\udc80-pair\udbff-null[\0]")
# invalid size
writer = self.create_writer(0)
with self.assertRaises(ValueError):
writer.write_ucs4("text", -1)
@unittest.skipIf(ctypes is None, 'need ctypes')