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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import unittest
  5. from ctypes import *
  6. import _ctypes_test
  7.  
  8. class SlicesTestCase(unittest.TestCase):
  9.     
  10.     def test_getslice_cint(self):
  11.         a = c_int * 100(*xrange(1100, 1200))
  12.         b = range(1100, 1200)
  13.         self.failUnlessEqual(a[0:2], b[0:2])
  14.         self.failUnlessEqual(a[0:2:], b[0:2:])
  15.         self.failUnlessEqual(len(a), len(b))
  16.         self.failUnlessEqual(a[5:7], b[5:7])
  17.         self.failUnlessEqual(a[5:7:], b[5:7:])
  18.         self.failUnlessEqual(a[-1], b[-1])
  19.         self.failUnlessEqual(a[:], b[:])
  20.         self.failUnlessEqual(a[::], b[::])
  21.         self.failUnlessEqual(a[10::-1], b[10::-1])
  22.         self.failUnlessEqual(a[30:20:-1], b[30:20:-1])
  23.         self.failUnlessEqual(a[:12:6], b[:12:6])
  24.         self.failUnlessEqual(a[2:6:4], b[2:6:4])
  25.         a[0:5] = range(5, 10)
  26.         self.failUnlessEqual(a[0:5], range(5, 10))
  27.         self.failUnlessEqual(a[0:5:], range(5, 10))
  28.         self.failUnlessEqual(a[4::-1], range(9, 4, -1))
  29.  
  30.     
  31.     def test_setslice_cint(self):
  32.         a = c_int * 100(*xrange(1100, 1200))
  33.         b = range(1100, 1200)
  34.         a[32:47] = range(32, 47)
  35.         self.failUnlessEqual(a[32:47], range(32, 47))
  36.         a[32:47] = range(132, 147)
  37.         self.failUnlessEqual(a[32:47:], range(132, 147))
  38.         a[46:31:-1] = range(232, 247)
  39.         self.failUnlessEqual(a[32:47:1], range(246, 231, -1))
  40.         a[32:47] = range(1132, 1147)
  41.         self.failUnlessEqual(a[:], b)
  42.         a[32:47:7] = range(3)
  43.         b[32:47:7] = range(3)
  44.         self.failUnlessEqual(a[:], b)
  45.         a[33::-3] = range(12)
  46.         b[33::-3] = range(12)
  47.         self.failUnlessEqual(a[:], b)
  48.         setslice = setslice
  49.         setitem = setitem
  50.         import operator
  51.         self.assertRaises(TypeError, setslice, a, 0, 5, 'abcde')
  52.         self.assertRaises(TypeError, setitem, a, slice(0, 5), 'abcde')
  53.         self.assertRaises(TypeError, setslice, a, 0, 5, [
  54.             'a',
  55.             'b',
  56.             'c',
  57.             'd',
  58.             'e'])
  59.         self.assertRaises(TypeError, setitem, a, slice(0, 5), [
  60.             'a',
  61.             'b',
  62.             'c',
  63.             'd',
  64.             'e'])
  65.         self.assertRaises(TypeError, setslice, a, 0, 5, [
  66.             1,
  67.             2,
  68.             3,
  69.             4,
  70.             3.14])
  71.         self.assertRaises(TypeError, setitem, a, slice(0, 5), [
  72.             1,
  73.             2,
  74.             3,
  75.             4,
  76.             3.14])
  77.         self.assertRaises(ValueError, setslice, a, 0, 5, range(32))
  78.         self.assertRaises(ValueError, setitem, a, slice(0, 5), range(32))
  79.  
  80.     
  81.     def test_char_ptr(self):
  82.         s = 'abcdefghijklmnopqrstuvwxyz'
  83.         dll = CDLL(_ctypes_test.__file__)
  84.         dll.my_strdup.restype = POINTER(c_char)
  85.         dll.my_free.restype = None
  86.         res = dll.my_strdup(s)
  87.         self.failUnlessEqual(res[:len(s)], s)
  88.         self.failUnlessEqual(res[:3], s[:3])
  89.         self.failUnlessEqual(res[:len(s):], s)
  90.         self.failUnlessEqual(res[len(s) - 1:-1:-1], s[::-1])
  91.         self.failUnlessEqual(res[len(s) - 1:5:-7], s[:5:-7])
  92.         self.failUnlessEqual(res[0:-1:-1], s[0::-1])
  93.         import operator
  94.         self.assertRaises(ValueError, operator.getitem, res, slice(None, None, None))
  95.         self.assertRaises(ValueError, operator.getitem, res, slice(0, None, None))
  96.         self.assertRaises(ValueError, operator.getitem, res, slice(None, 5, -1))
  97.         self.assertRaises(ValueError, operator.getitem, res, slice(-5, None, None))
  98.         self.assertRaises(TypeError, operator.setslice, res, 0, 5, u'abcde')
  99.         self.assertRaises(TypeError, operator.setitem, res, slice(0, 5), u'abcde')
  100.         dll.my_free(res)
  101.         dll.my_strdup.restype = POINTER(c_byte)
  102.         res = dll.my_strdup(s)
  103.         self.failUnlessEqual(res[:len(s)], range(ord('a'), ord('z') + 1))
  104.         self.failUnlessEqual(res[:len(s):], range(ord('a'), ord('z') + 1))
  105.         dll.my_free(res)
  106.  
  107.     
  108.     def test_char_ptr_with_free(self):
  109.         dll = CDLL(_ctypes_test.__file__)
  110.         s = 'abcdefghijklmnopqrstuvwxyz'
  111.         
  112.         class allocated_c_char_p(c_char_p):
  113.             pass
  114.  
  115.         dll.my_free.restype = None
  116.         
  117.         def errcheck(result, func, args):
  118.             retval = result.value
  119.             dll.my_free(result)
  120.             return retval
  121.  
  122.         dll.my_strdup.restype = allocated_c_char_p
  123.         dll.my_strdup.errcheck = errcheck
  124.         
  125.         try:
  126.             res = dll.my_strdup(s)
  127.             self.failUnlessEqual(res, s)
  128.         finally:
  129.             del dll.my_strdup.errcheck
  130.  
  131.  
  132.     
  133.     def test_char_array(self):
  134.         s = 'abcdefghijklmnopqrstuvwxyz\x00'
  135.         p = c_char * 27(*s)
  136.         self.failUnlessEqual(p[:], s)
  137.         self.failUnlessEqual(p[::], s)
  138.         self.failUnlessEqual(p[::-1], s[::-1])
  139.         self.failUnlessEqual(p[5::-2], s[5::-2])
  140.         self.failUnlessEqual(p[2:5:-3], s[2:5:-3])
  141.  
  142.     
  143.     try:
  144.         c_wchar
  145.     except NameError:
  146.         pass
  147.  
  148.     
  149.     def test_wchar_ptr(self):
  150.         s = u'abcdefghijklmnopqrstuvwxyz\x00'
  151.         dll = CDLL(_ctypes_test.__file__)
  152.         dll.my_wcsdup.restype = POINTER(c_wchar)
  153.         dll.my_wcsdup.argtypes = (POINTER(c_wchar),)
  154.         dll.my_free.restype = None
  155.         res = dll.my_wcsdup(s)
  156.         self.failUnlessEqual(res[:len(s)], s)
  157.         self.failUnlessEqual(res[:len(s):], s)
  158.         self.failUnlessEqual(res[len(s) - 1:-1:-1], s[::-1])
  159.         self.failUnlessEqual(res[len(s) - 1:5:-7], s[:5:-7])
  160.         import operator
  161.         self.assertRaises(TypeError, operator.setslice, res, 0, 5, u'abcde')
  162.         self.assertRaises(TypeError, operator.setitem, res, slice(0, 5), u'abcde')
  163.         dll.my_free(res)
  164.         if sizeof(c_wchar) == sizeof(c_short):
  165.             dll.my_wcsdup.restype = POINTER(c_short)
  166.         elif sizeof(c_wchar) == sizeof(c_int):
  167.             dll.my_wcsdup.restype = POINTER(c_int)
  168.         elif sizeof(c_wchar) == sizeof(c_long):
  169.             dll.my_wcsdup.restype = POINTER(c_long)
  170.         else:
  171.             return None
  172.         res = (sizeof(c_wchar) == sizeof(c_short)).my_wcsdup(s)
  173.         tmpl = range(ord('a'), ord('z') + 1)
  174.         self.failUnlessEqual(res[:len(s) - 1], tmpl)
  175.         self.failUnlessEqual(res[:len(s) - 1:], tmpl)
  176.         self.failUnlessEqual(res[len(s) - 2:-1:-1], tmpl[::-1])
  177.         self.failUnlessEqual(res[len(s) - 2:5:-7], tmpl[:5:-7])
  178.         dll.my_free(res)
  179.  
  180.  
  181. if __name__ == '__main__':
  182.     unittest.main()
  183.  
  184.