home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_350 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  7.7 KB  |  238 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. dll = CDLL(_ctypes_test.__file__)
  8.  
  9. try:
  10.     CALLBACK_FUNCTYPE = WINFUNCTYPE
  11. except NameError:
  12.     CALLBACK_FUNCTYPE = CFUNCTYPE
  13.  
  14.  
  15. class POINT(Structure):
  16.     _fields_ = [
  17.         ('x', c_int),
  18.         ('y', c_int)]
  19.  
  20.  
  21. class BasicWrapTestCase(unittest.TestCase):
  22.     
  23.     def wrap(self, param):
  24.         return param
  25.  
  26.     
  27.     def test_wchar_parm(self):
  28.         
  29.         try:
  30.             c_wchar
  31.         except NameError:
  32.             return None
  33.  
  34.         f = dll._testfunc_i_bhilfd
  35.         f.argtypes = [
  36.             c_byte,
  37.             c_wchar,
  38.             c_int,
  39.             c_long,
  40.             c_float,
  41.             c_double]
  42.         result = f(self.wrap(1), self.wrap(u'x'), self.wrap(3), self.wrap(4), self.wrap(5), self.wrap(6))
  43.         self.failUnlessEqual(result, 139)
  44.         self.failUnless(type(result), int)
  45.  
  46.     
  47.     def test_pointers(self):
  48.         f = dll._testfunc_p_p
  49.         f.restype = POINTER(c_int)
  50.         f.argtypes = [
  51.             POINTER(c_int)]
  52.         v = c_int(42)
  53.         self.failUnlessEqual(pointer(v).contents.value, 42)
  54.         result = f(self.wrap(pointer(v)))
  55.         self.failUnlessEqual(type(result), POINTER(c_int))
  56.         self.failUnlessEqual(result.contents.value, 42)
  57.         result = f(self.wrap(pointer(v)))
  58.         self.failUnlessEqual(result.contents.value, v.value)
  59.         p = pointer(c_int(99))
  60.         result = f(self.wrap(p))
  61.         self.failUnlessEqual(result.contents.value, 99)
  62.  
  63.     
  64.     def test_shorts(self):
  65.         f = dll._testfunc_callback_i_if
  66.         args = []
  67.         expected = [
  68.             262144,
  69.             131072,
  70.             65536,
  71.             32768,
  72.             16384,
  73.             8192,
  74.             4096,
  75.             2048,
  76.             1024,
  77.             512,
  78.             256,
  79.             128,
  80.             64,
  81.             32,
  82.             16,
  83.             8,
  84.             4,
  85.             2,
  86.             1]
  87.         
  88.         def callback(v):
  89.             args.append(v)
  90.             return v
  91.  
  92.         CallBack = CFUNCTYPE(c_int, c_int)
  93.         cb = CallBack(callback)
  94.         f(self.wrap(262144), self.wrap(cb))
  95.         self.failUnlessEqual(args, expected)
  96.  
  97.     
  98.     def test_callbacks(self):
  99.         f = dll._testfunc_callback_i_if
  100.         f.restype = c_int
  101.         MyCallback = CFUNCTYPE(c_int, c_int)
  102.         
  103.         def callback(value):
  104.             return value
  105.  
  106.         cb = MyCallback(callback)
  107.         result = f(self.wrap(-10), self.wrap(cb))
  108.         self.failUnlessEqual(result, -18)
  109.         f.argtypes = [
  110.             c_int,
  111.             MyCallback]
  112.         cb = MyCallback(callback)
  113.         result = f(self.wrap(-10), self.wrap(cb))
  114.         self.failUnlessEqual(result, -18)
  115.         result = f(self.wrap(-10), self.wrap(cb))
  116.         self.failUnlessEqual(result, -18)
  117.         AnotherCallback = CALLBACK_FUNCTYPE(c_int, c_int, c_int, c_int, c_int)
  118.         cb = AnotherCallback(callback)
  119.         self.assertRaises(ArgumentError, f, self.wrap(-10), self.wrap(cb))
  120.  
  121.     
  122.     def test_callbacks_2(self):
  123.         f = dll._testfunc_callback_i_if
  124.         f.restype = c_int
  125.         MyCallback = CFUNCTYPE(c_int, c_int)
  126.         f.argtypes = [
  127.             c_int,
  128.             MyCallback]
  129.         
  130.         def callback(value):
  131.             self.failUnlessEqual(type(value), int)
  132.             return value
  133.  
  134.         cb = MyCallback(callback)
  135.         result = f(self.wrap(-10), self.wrap(cb))
  136.         self.failUnlessEqual(result, -18)
  137.  
  138.     
  139.     def test_longlong_callbacks(self):
  140.         f = dll._testfunc_callback_q_qf
  141.         f.restype = c_longlong
  142.         MyCallback = CFUNCTYPE(c_longlong, c_longlong)
  143.         f.argtypes = [
  144.             c_longlong,
  145.             MyCallback]
  146.         
  147.         def callback(value):
  148.             self.failUnless(isinstance(value, (int, long)))
  149.             return value & 2147483647
  150.  
  151.         cb = MyCallback(callback)
  152.         self.failUnlessEqual(0x3294A1FF3L, int(f(self.wrap(0xE8D4A51000L), self.wrap(cb))))
  153.  
  154.     
  155.     def test_byval(self):
  156.         ptin = POINT(1, 2)
  157.         ptout = POINT()
  158.         result = dll._testfunc_byval(ptin, byref(ptout))
  159.         got = (result, ptout.x, ptout.y)
  160.         expected = (3, 1, 2)
  161.         self.failUnlessEqual(got, expected)
  162.         ptin = POINT(101, 102)
  163.         ptout = POINT()
  164.         dll._testfunc_byval.argtypes = (POINT, POINTER(POINT))
  165.         dll._testfunc_byval.restype = c_int
  166.         result = dll._testfunc_byval(self.wrap(ptin), byref(ptout))
  167.         got = (result, ptout.x, ptout.y)
  168.         expected = (203, 101, 102)
  169.         self.failUnlessEqual(got, expected)
  170.  
  171.     
  172.     def test_struct_return_2H(self):
  173.         
  174.         class S2H(Structure):
  175.             _fields_ = [
  176.                 ('x', c_short),
  177.                 ('y', c_short)]
  178.  
  179.         dll.ret_2h_func.restype = S2H
  180.         dll.ret_2h_func.argtypes = [
  181.             S2H]
  182.         inp = S2H(99, 88)
  183.         s2h = dll.ret_2h_func(self.wrap(inp))
  184.         self.failUnlessEqual((s2h.x, s2h.y), (198, 264))
  185.  
  186.     
  187.     def test_struct_return_8H(self):
  188.         
  189.         class S8I(Structure):
  190.             _fields_ = [
  191.                 ('a', c_int),
  192.                 ('b', c_int),
  193.                 ('c', c_int),
  194.                 ('d', c_int),
  195.                 ('e', c_int),
  196.                 ('f', c_int),
  197.                 ('g', c_int),
  198.                 ('h', c_int)]
  199.  
  200.         dll.ret_8i_func.restype = S8I
  201.         dll.ret_8i_func.argtypes = [
  202.             S8I]
  203.         inp = S8I(9, 8, 7, 6, 5, 4, 3, 2)
  204.         s8i = dll.ret_8i_func(self.wrap(inp))
  205.         self.failUnlessEqual((s8i.a, s8i.b, s8i.c, s8i.d, s8i.e, s8i.f, s8i.g, s8i.h), (18, 24, 28, 30, 30, 28, 24, 18))
  206.  
  207.  
  208.  
  209. class AsParamWrapper(object):
  210.     
  211.     def __init__(self, param):
  212.         self._as_parameter_ = param
  213.  
  214.  
  215.  
  216. class AsParamWrapperTestCase(BasicWrapTestCase):
  217.     wrap = AsParamWrapper
  218.  
  219.  
  220. class AsParamPropertyWrapper(object):
  221.     
  222.     def __init__(self, param):
  223.         self._param = param
  224.  
  225.     
  226.     def getParameter(self):
  227.         return self._param
  228.  
  229.     _as_parameter_ = property(getParameter)
  230.  
  231.  
  232. class AsParamPropertyWrapperTestCase(BasicWrapTestCase):
  233.     wrap = AsParamPropertyWrapper
  234.  
  235. if __name__ == '__main__':
  236.     unittest.main()
  237.  
  238.