Issue #8670: ctypes.c_wchar supports non-BMP characters with 32 bits wchar_t
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 @@
             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 @@
 
     # 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 @@
         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 @@
             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')