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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import unittest
  5. import sys
  6. from ctypes import *
  7. import _ctypes_test
  8. ctype_types = [
  9.     c_byte,
  10.     c_ubyte,
  11.     c_short,
  12.     c_ushort,
  13.     c_int,
  14.     c_uint,
  15.     c_long,
  16.     c_ulong,
  17.     c_longlong,
  18.     c_ulonglong,
  19.     c_double,
  20.     c_float]
  21. python_types = [
  22.     int,
  23.     int,
  24.     int,
  25.     int,
  26.     int,
  27.     long,
  28.     int,
  29.     long,
  30.     long,
  31.     long,
  32.     float,
  33.     float]
  34.  
  35. class PointersTestCase(unittest.TestCase):
  36.     
  37.     def test_pointer_crash(self):
  38.         
  39.         class A(POINTER(c_ulong)):
  40.             pass
  41.  
  42.         POINTER(c_ulong)(c_ulong(22))
  43.         self.failUnlessRaises(TypeError, A, c_ulong(33))
  44.  
  45.     
  46.     def test_pass_pointers(self):
  47.         dll = CDLL(_ctypes_test.__file__)
  48.         func = dll._testfunc_p_p
  49.         func.restype = c_long
  50.         i = c_int(12345678)
  51.         address = func(byref(i))
  52.         self.failUnlessEqual(c_int.from_address(address).value, 12345678)
  53.         func.restype = POINTER(c_int)
  54.         res = func(pointer(i))
  55.         self.failUnlessEqual(res.contents.value, 12345678)
  56.         self.failUnlessEqual(res[0], 12345678)
  57.  
  58.     
  59.     def test_change_pointers(self):
  60.         dll = CDLL(_ctypes_test.__file__)
  61.         func = dll._testfunc_p_p
  62.         i = c_int(87654)
  63.         func.restype = POINTER(c_int)
  64.         func.argtypes = (POINTER(c_int),)
  65.         res = func(pointer(i))
  66.         self.failUnlessEqual(res[0], 87654)
  67.         self.failUnlessEqual(res.contents.value, 87654)
  68.         res[0] = 54345
  69.         self.failUnlessEqual(i.value, 54345)
  70.         res.contents = c_int(12321)
  71.         self.failUnlessEqual(i.value, 54345)
  72.  
  73.     
  74.     def test_callbacks_with_pointers(self):
  75.         PROTOTYPE = CFUNCTYPE(c_int, POINTER(c_int))
  76.         self.result = []
  77.         
  78.         def func(arg):
  79.             for i in range(10):
  80.                 self.result.append(arg[i])
  81.             
  82.             return 0
  83.  
  84.         callback = PROTOTYPE(func)
  85.         dll = CDLL(_ctypes_test.__file__)
  86.         doit = dll._testfunc_callback_with_pointer
  87.         doit(callback)
  88.         doit(callback)
  89.  
  90.     
  91.     def test_basics(self):
  92.         delitem = delitem
  93.         import operator
  94.         for ct, pt in zip(ctype_types, python_types):
  95.             i = ct(42)
  96.             p = pointer(i)
  97.             self.failUnless(type(p.contents) is ct)
  98.             self.assertRaises(TypeError, delitem, p, 0)
  99.         
  100.  
  101.     
  102.     def test_from_address(self):
  103.         array = array
  104.         import array
  105.         a = array('i', [
  106.             100,
  107.             200,
  108.             300,
  109.             400,
  110.             500])
  111.         addr = a.buffer_info()[0]
  112.         p = POINTER(POINTER(c_int))
  113.  
  114.     
  115.     def test_other(self):
  116.         
  117.         class Table(Structure):
  118.             _fields_ = [
  119.                 ('a', c_int),
  120.                 ('b', c_int),
  121.                 ('c', c_int)]
  122.  
  123.         pt = pointer(Table(1, 2, 3))
  124.         self.failUnlessEqual(pt.contents.a, 1)
  125.         self.failUnlessEqual(pt.contents.b, 2)
  126.         self.failUnlessEqual(pt.contents.c, 3)
  127.         pt.contents.c = 33
  128.         _pointer_type_cache = _pointer_type_cache
  129.         import ctypes
  130.         del _pointer_type_cache[Table]
  131.  
  132.     
  133.     def test_basic(self):
  134.         p = pointer(c_int(42))
  135.         self.assertRaises(TypeError, len, p)
  136.         self.failUnlessEqual(p[0], 42)
  137.         self.failUnlessEqual(p.contents.value, 42)
  138.  
  139.     
  140.     def test_charpp(self):
  141.         dll = CDLL(_ctypes_test.__file__)
  142.         func = dll._testfunc_c_p_p
  143.         func.restype = c_char_p
  144.         argv = c_char_p * 2()
  145.         argc = c_int(2)
  146.         argv[0] = 'hello'
  147.         argv[1] = 'world'
  148.         result = func(byref(argc), argv)
  149.  
  150.     
  151.     def test_bug_1467852(self):
  152.         x = c_int(5)
  153.         dummy = []
  154.         for i in range(32000):
  155.             dummy.append(c_int(i))
  156.         
  157.         y = c_int(6)
  158.         p = pointer(x)
  159.         pp = pointer(p)
  160.         q = pointer(y)
  161.         pp[0] = q
  162.         self.failUnlessEqual(p[0], 6)
  163.  
  164.     
  165.     def test_c_void_p(self):
  166.         if sizeof(c_void_p) == 4:
  167.             self.failUnlessEqual(c_void_p(0xFFFFFFFFL).value, c_void_p(-1).value)
  168.             self.failUnlessEqual(c_void_p(0xFFFFFFFFFFFFFFFFL).value, c_void_p(-1).value)
  169.         elif sizeof(c_void_p) == 8:
  170.             self.failUnlessEqual(c_void_p(0xFFFFFFFFL).value, 0xFFFFFFFFL)
  171.             self.failUnlessEqual(c_void_p(0xFFFFFFFFFFFFFFFFL).value, c_void_p(-1).value)
  172.             self.failUnlessEqual(c_void_p(0xFFFFFFFFFFFFFFFFFFFFFFFFL).value, c_void_p(-1).value)
  173.         
  174.         self.assertRaises(TypeError, c_void_p, 3.14)
  175.         self.assertRaises(TypeError, c_void_p, object())
  176.  
  177.     
  178.     def test_pointers_bool(self):
  179.         self.failUnlessEqual(bool(POINTER(c_int)()), False)
  180.         self.failUnlessEqual(bool(pointer(c_int())), True)
  181.         self.failUnlessEqual(bool(CFUNCTYPE(None)(0)), False)
  182.         self.failUnlessEqual(bool(CFUNCTYPE(None)(42)), True)
  183.         if sys.platform == 'win32':
  184.             mth = WINFUNCTYPE(None)(42, 'name', (), None)
  185.             self.failUnlessEqual(bool(mth), True)
  186.         
  187.  
  188.  
  189. if __name__ == '__main__':
  190.     unittest.main()
  191.  
  192.