diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-02 11:25:35 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-02 11:25:35 (GMT) |
commit | 749261e241849834a5cfc70808260a534e50875f (patch) | |
tree | afbaa8979a5b74dd2f3236454b661fdcf2b9d4c8 /Lib | |
parent | 5593d8aeb4bcc904ff58e8e3eb8b799a0aabc302 (diff) | |
download | cpython-749261e241849834a5cfc70808260a534e50875f.zip cpython-749261e241849834a5cfc70808260a534e50875f.tar.gz cpython-749261e241849834a5cfc70808260a534e50875f.tar.bz2 |
Issue #8670: ctypes.c_wchar supports non-BMP characters with 32 bits wchar_t
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ctypes/test/test_strings.py | 7 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 22 |
2 files changed, 18 insertions, 11 deletions
diff --git a/Lib/ctypes/test/test_strings.py b/Lib/ctypes/test/test_strings.py index d6ffe3f..1a9bdbc 100644 --- a/Lib/ctypes/test/test_strings.py +++ b/Lib/ctypes/test/test_strings.py @@ -74,6 +74,13 @@ else: buf[1] = "Z" self.assertEqual(buf.value, "xZCD") + @unittest.skipIf(sizeof(c_wchar) < 4, + "sizeof(wchar_t) is smaller than 4 bytes") + def test_nonbmp(self): + u = chr(0x10ffff) + w = c_wchar(u) + self.assertEqual(w.value, u) + class StringTestCase(unittest.TestCase): def XX_test_basic_strings(self): cs = c_string("abcdef") diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 285b7af..ff90745 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -1396,26 +1396,26 @@ class UnicodeTest(string_tests.CommonTest, # Test PyUnicode_AsWideChar() def test_aswidechar(self): - from _testcapi import test_aswidechar + from _testcapi import unicode_aswidechar from ctypes import c_wchar, sizeof - wchar, size = test_aswidechar('abcdef', 2) + wchar, size = unicode_aswidechar('abcdef', 2) self.assertEquals(size, 2) self.assertEquals(wchar, 'ab') - wchar, size = test_aswidechar('abc', 3) + wchar, size = unicode_aswidechar('abc', 3) self.assertEquals(size, 3) self.assertEquals(wchar, 'abc') - wchar, size = test_aswidechar('abc', 4) + wchar, size = unicode_aswidechar('abc', 4) self.assertEquals(size, 3) self.assertEquals(wchar, 'abc\0') - wchar, size = test_aswidechar('abc', 10) + wchar, size = unicode_aswidechar('abc', 10) self.assertEquals(size, 3) self.assertEquals(wchar, 'abc\0') - wchar, size = test_aswidechar('abc\0def', 20) + wchar, size = unicode_aswidechar('abc\0def', 20) self.assertEquals(size, 7) self.assertEquals(wchar, 'abc\0def\0') @@ -1426,20 +1426,20 @@ class UnicodeTest(string_tests.CommonTest, else: # sizeof(c_wchar) == 4 buflen = 2 nchar = 1 - wchar, size = test_aswidechar(nonbmp, buflen) + wchar, size = unicode_aswidechar(nonbmp, buflen) self.assertEquals(size, nchar) self.assertEquals(wchar, nonbmp + '\0') # Test PyUnicode_AsWideCharString() def test_aswidecharstring(self): - from _testcapi import test_aswidecharstring + from _testcapi import unicode_aswidecharstring from ctypes import c_wchar, sizeof - wchar, size = test_aswidecharstring('abc') + wchar, size = unicode_aswidecharstring('abc') self.assertEquals(size, 3) self.assertEquals(wchar, 'abc\0') - wchar, size = test_aswidecharstring('abc\0def') + wchar, size = unicode_aswidecharstring('abc\0def') self.assertEquals(size, 7) self.assertEquals(wchar, 'abc\0def\0') @@ -1448,7 +1448,7 @@ class UnicodeTest(string_tests.CommonTest, nchar = 2 else: # sizeof(c_wchar) == 4 nchar = 1 - wchar, size = test_aswidecharstring(nonbmp) + wchar, size = unicode_aswidecharstring(nonbmp) self.assertEquals(size, nchar) self.assertEquals(wchar, nonbmp + '\0') |