summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_unicode.py
diff options
context:
space:
mode:
authorHai Shi <shihai1992@gmail.com>2019-07-20 07:56:23 (GMT)
committerXiang Zhang <angwerzx@126.com>2019-07-20 07:56:23 (GMT)
commit5623ac87bbe5de481957eca5eeae06347612fbeb (patch)
tree396e4cbd51b5e0b59eb0cab1dbbbfb0d1dcd06eb /Lib/test/test_unicode.py
parenteed5e9a9562d4dcd137e9f0fc7157bc3373c98cc (diff)
downloadcpython-5623ac87bbe5de481957eca5eeae06347612fbeb.zip
cpython-5623ac87bbe5de481957eca5eeae06347612fbeb.tar.gz
cpython-5623ac87bbe5de481957eca5eeae06347612fbeb.tar.bz2
bpo-37476: Adding tests for asutf8 and asutf8andsize (GH-14531)
Diffstat (limited to 'Lib/test/test_unicode.py')
-rw-r--r--Lib/test/test_unicode.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 177d80d..8be16c8 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -2819,6 +2819,34 @@ class CAPITest(unittest.TestCase):
self.assertEqual(unicode_asucs4(s, len(s), 1), s+'\0')
self.assertEqual(unicode_asucs4(s, len(s), 0), s+'\uffff')
+ # Test PyUnicode_AsUTF8()
+ @support.cpython_only
+ def test_asutf8(self):
+ from _testcapi import unicode_asutf8
+
+ bmp = '\u0100'
+ bmp2 = '\uffff'
+ nonbmp = chr(0x10ffff)
+
+ self.assertEqual(unicode_asutf8(bmp), b'\xc4\x80')
+ self.assertEqual(unicode_asutf8(bmp2), b'\xef\xbf\xbf')
+ self.assertEqual(unicode_asutf8(nonbmp), b'\xf4\x8f\xbf\xbf')
+ self.assertRaises(UnicodeEncodeError, unicode_asutf8, 'a\ud800b\udfffc')
+
+ # Test PyUnicode_AsUTF8AndSize()
+ @support.cpython_only
+ def test_asutf8andsize(self):
+ from _testcapi import unicode_asutf8andsize
+
+ bmp = '\u0100'
+ bmp2 = '\uffff'
+ nonbmp = chr(0x10ffff)
+
+ self.assertEqual(unicode_asutf8andsize(bmp), (b'\xc4\x80', 2))
+ self.assertEqual(unicode_asutf8andsize(bmp2), (b'\xef\xbf\xbf', 3))
+ self.assertEqual(unicode_asutf8andsize(nonbmp), (b'\xf4\x8f\xbf\xbf', 4))
+ self.assertRaises(UnicodeEncodeError, unicode_asutf8andsize, 'a\ud800b\udfffc')
+
# Test PyUnicode_FindChar()
@support.cpython_only
def test_findchar(self):