home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_394 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  5.2 KB  |  140 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import unittest
  5. import ctypes
  6.  
  7. try:
  8.     ctypes.c_wchar
  9. except AttributeError:
  10.     pass
  11.  
  12. import _ctypes_test
  13. dll = ctypes.CDLL(_ctypes_test.__file__)
  14. wcslen = dll.my_wcslen
  15. wcslen.argtypes = [
  16.     ctypes.c_wchar_p]
  17.  
  18. class UnicodeTestCase(unittest.TestCase):
  19.     
  20.     def setUp(self):
  21.         self.prev_conv_mode = ctypes.set_conversion_mode('ascii', 'strict')
  22.  
  23.     
  24.     def tearDown(self):
  25.         ctypes.set_conversion_mode(*self.prev_conv_mode)
  26.  
  27.     
  28.     def test_ascii_strict(self):
  29.         ctypes.set_conversion_mode('ascii', 'strict')
  30.         self.failUnlessEqual(wcslen(u'abc'), 3)
  31.         self.failUnlessEqual(wcslen(u'abΓü░'), 3)
  32.         self.failUnlessEqual(wcslen('abc'), 3)
  33.         self.failUnlessRaises(ctypes.ArgumentError, wcslen, 'ab\xe4')
  34.  
  35.     
  36.     def test_ascii_replace(self):
  37.         ctypes.set_conversion_mode('ascii', 'replace')
  38.         self.failUnlessEqual(wcslen(u'abc'), 3)
  39.         self.failUnlessEqual(wcslen(u'abΓü░'), 3)
  40.         self.failUnlessEqual(wcslen('abc'), 3)
  41.         self.failUnlessEqual(wcslen('ab\xe4'), 3)
  42.  
  43.     
  44.     def test_ascii_ignore(self):
  45.         ctypes.set_conversion_mode('ascii', 'ignore')
  46.         self.failUnlessEqual(wcslen(u'abc'), 3)
  47.         self.failUnlessEqual(wcslen(u'abΓü░'), 3)
  48.         self.failUnlessEqual(wcslen('abc'), 3)
  49.         self.failUnlessEqual(wcslen('\xe4\xf6\xfc\xdf'), 0)
  50.  
  51.     
  52.     def test_latin1_strict(self):
  53.         ctypes.set_conversion_mode('latin-1', 'strict')
  54.         self.failUnlessEqual(wcslen(u'abc'), 3)
  55.         self.failUnlessEqual(wcslen(u'abΓü░'), 3)
  56.         self.failUnlessEqual(wcslen('abc'), 3)
  57.         self.failUnlessEqual(wcslen('\xe4\xf6\xfc\xdf'), 4)
  58.  
  59.     
  60.     def test_buffers(self):
  61.         ctypes.set_conversion_mode('ascii', 'strict')
  62.         buf = ctypes.create_unicode_buffer('abc')
  63.         self.failUnlessEqual(len(buf), 4)
  64.         ctypes.set_conversion_mode('ascii', 'replace')
  65.         buf = ctypes.create_unicode_buffer('ab\xe4\xf6\xfc')
  66.         self.failUnlessEqual(buf[:], u'ab∩┐╜∩┐╜∩┐╜\x00')
  67.         self.failUnlessEqual(buf[::], u'ab∩┐╜∩┐╜∩┐╜\x00')
  68.         self.failUnlessEqual(buf[::-1], u'\x00∩┐╜∩┐╜∩┐╜ba')
  69.         self.failUnlessEqual(buf[::2], u'a∩┐╜∩┐╜')
  70.         self.failUnlessEqual(buf[6:5:-1], u'')
  71.         ctypes.set_conversion_mode('ascii', 'ignore')
  72.         buf = ctypes.create_unicode_buffer('ab\xe4\xf6\xfc')
  73.         self.failUnlessEqual(buf[:], u'ab\x00\x00\x00\x00')
  74.         self.failUnlessEqual(buf[::], u'ab\x00\x00\x00\x00')
  75.         self.failUnlessEqual(buf[::-1], u'\x00\x00\x00\x00ba')
  76.         self.failUnlessEqual(buf[::2], u'a\x00\x00')
  77.         self.failUnlessEqual(buf[6:5:-1], u'')
  78.  
  79.  
  80. import _ctypes_test
  81. func = ctypes.CDLL(_ctypes_test.__file__)._testfunc_p_p
  82.  
  83. class StringTestCase(UnicodeTestCase):
  84.     
  85.     def setUp(self):
  86.         self.prev_conv_mode = ctypes.set_conversion_mode('ascii', 'strict')
  87.         func.argtypes = [
  88.             ctypes.c_char_p]
  89.         func.restype = ctypes.c_char_p
  90.  
  91.     
  92.     def tearDown(self):
  93.         ctypes.set_conversion_mode(*self.prev_conv_mode)
  94.         func.argtypes = None
  95.         func.restype = ctypes.c_int
  96.  
  97.     
  98.     def test_ascii_replace(self):
  99.         ctypes.set_conversion_mode('ascii', 'strict')
  100.         self.failUnlessEqual(func('abc'), 'abc')
  101.         self.failUnlessEqual(func(u'abc'), 'abc')
  102.         self.assertRaises(ctypes.ArgumentError, func, u'ab├ñ')
  103.  
  104.     
  105.     def test_ascii_ignore(self):
  106.         ctypes.set_conversion_mode('ascii', 'ignore')
  107.         self.failUnlessEqual(func('abc'), 'abc')
  108.         self.failUnlessEqual(func(u'abc'), 'abc')
  109.         self.failUnlessEqual(func(u'├ñ├╢├╝├ƒ'), '')
  110.  
  111.     
  112.     def test_ascii_replace(self):
  113.         ctypes.set_conversion_mode('ascii', 'replace')
  114.         self.failUnlessEqual(func('abc'), 'abc')
  115.         self.failUnlessEqual(func(u'abc'), 'abc')
  116.         self.failUnlessEqual(func(u'├ñ├╢├╝├ƒ'), '????')
  117.  
  118.     
  119.     def test_buffers(self):
  120.         ctypes.set_conversion_mode('ascii', 'strict')
  121.         buf = ctypes.create_string_buffer(u'abc')
  122.         self.failUnlessEqual(len(buf), 4)
  123.         ctypes.set_conversion_mode('ascii', 'replace')
  124.         buf = ctypes.create_string_buffer(u'ab├ñ├╢├╝')
  125.         self.failUnlessEqual(buf[:], 'ab???\x00')
  126.         self.failUnlessEqual(buf[::], 'ab???\x00')
  127.         self.failUnlessEqual(buf[::-1], '\x00???ba')
  128.         self.failUnlessEqual(buf[::2], 'a??')
  129.         self.failUnlessEqual(buf[6:5:-1], '')
  130.         ctypes.set_conversion_mode('ascii', 'ignore')
  131.         buf = ctypes.create_string_buffer(u'ab├ñ├╢├╝')
  132.         self.failUnlessEqual(buf[:], 'ab\x00\x00\x00\x00')
  133.         self.failUnlessEqual(buf[::], 'ab\x00\x00\x00\x00')
  134.         self.failUnlessEqual(buf[::-1], '\x00\x00\x00\x00ba')
  135.  
  136.  
  137. if __name__ == '__main__':
  138.     unittest.main()
  139.  
  140.