mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-119182: Add PyUnicodeWriter_WriteUCS4() function (#120849)
This commit is contained in:
parent
a47abdb45d
commit
2e157851e3
7 changed files with 131 additions and 6 deletions
|
@ -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')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue