summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-10-02 11:25:35 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-10-02 11:25:35 (GMT)
commit749261e241849834a5cfc70808260a534e50875f (patch)
treeafbaa8979a5b74dd2f3236454b661fdcf2b9d4c8 /Lib
parent5593d8aeb4bcc904ff58e8e3eb8b799a0aabc302 (diff)
downloadcpython-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.py7
-rw-r--r--Lib/test/test_unicode.py22
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')