summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_capi/test_unicode.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_capi/test_unicode.py')
-rw-r--r--Lib/test/test_capi/test_unicode.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/Lib/test/test_capi/test_unicode.py b/Lib/test/test_capi/test_unicode.py
index 48a802c..9ef476a 100644
--- a/Lib/test/test_capi/test_unicode.py
+++ b/Lib/test/test_capi/test_unicode.py
@@ -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')