Update of /cvsroot/ctypes/ctypes/unittests
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11303
Modified Files:
test_unicode.py
Log Message:
Test that conversions also work in create_string_buffer and create_unicode_buffer.
Index: test_unicode.py
===================================================================
RCS file: /cvsroot/ctypes/ctypes/unittests/test_unicode.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** test_unicode.py 12 Oct 2004 18:03:54 -0000 1.1
--- test_unicode.py 12 Oct 2004 19:05:08 -0000 1.2
***************
*** 63,66 ****
--- 63,80 ----
self.failUnlessEqual(wcslen("äöüß"), 4)
+ def test_buffers(self):
+ ctypes.set_conversion_mode("ascii", "strict")
+ buf = ctypes.create_unicode_buffer("abc")
+ self.failUnlessEqual(len(buf), 3+1)
+
+ ctypes.set_conversion_mode("ascii", "replace")
+ buf = ctypes.create_unicode_buffer("abäöü")
+ self.failUnlessEqual(buf[:], u"ab\uFFFD\uFFFD\uFFFD\0")
+
+ ctypes.set_conversion_mode("ascii", "ignore")
+ buf = ctypes.create_unicode_buffer("abäöü")
+ # is that correct? not sure. But with 'ignore', you get what you pay for..
+ self.failUnlessEqual(buf[:], u"ab\0\0\0\0")
+
import _ctypes_test
func = ctypes.CDLL(_ctypes_test.__file__)._testfunc_p_p
***************
*** 95,99 ****
--- 109,125 ----
self.failUnlessEqual(func(u"äöüß"), "????")
+ def test_buffers(self):
+ ctypes.set_conversion_mode("ascii", "strict")
+ buf = ctypes.create_string_buffer(u"abc")
+ self.failUnlessEqual(len(buf), 3+1)
+ ctypes.set_conversion_mode("ascii", "replace")
+ buf = ctypes.create_string_buffer(u"abäöü")
+ self.failUnlessEqual(buf[:], "ab???\0")
+
+ ctypes.set_conversion_mode("ascii", "ignore")
+ buf = ctypes.create_string_buffer(u"abäöü")
+ # is that correct? not sure. But with 'ignore', you get what you pay for..
+ self.failUnlessEqual(buf[:], "ab\0\0\0\0")
if __name__ == '__main__':
|