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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from ctypes import *
  5. import unittest
  6. import _ctypes_test
  7. testdll = CDLL(_ctypes_test.__file__)
  8.  
  9. def positive_address(a):
  10.     if a >= 0:
  11.         return a
  12.     import struct
  13.     num_bits = struct.calcsize('P') * 8
  14.     a += 0x1L << num_bits
  15.     return a
  16.  
  17.  
  18. def c_wbuffer(init):
  19.     n = len(init) + 1
  20.     return c_wchar * n(*init)
  21.  
  22.  
  23. class CharPointersTestCase(unittest.TestCase):
  24.     
  25.     def setUp(self):
  26.         func = testdll._testfunc_p_p
  27.         func.restype = c_long
  28.         func.argtypes = None
  29.  
  30.     
  31.     def test_paramflags(self):
  32.         prototype = CFUNCTYPE(c_void_p, c_void_p)
  33.         func = prototype(('_testfunc_p_p', testdll), ((1, 'input'),))
  34.         
  35.         try:
  36.             func()
  37.         except TypeError:
  38.             details = None
  39.             self.failUnlessEqual(str(details), "required argument 'input' missing")
  40.  
  41.         self.fail('TypeError not raised')
  42.         self.failUnlessEqual(func(None), None)
  43.         self.failUnlessEqual(func(input = None), None)
  44.  
  45.     
  46.     def test_int_pointer_arg(self):
  47.         func = testdll._testfunc_p_p
  48.         func.restype = c_long
  49.         self.failUnlessEqual(0, func(0))
  50.         ci = c_int(0)
  51.         func.argtypes = (POINTER(c_int),)
  52.         self.failUnlessEqual(positive_address(addressof(ci)), positive_address(func(byref(ci))))
  53.         func.argtypes = (c_char_p,)
  54.         self.assertRaises(ArgumentError, func, byref(ci))
  55.         func.argtypes = (POINTER(c_short),)
  56.         self.assertRaises(ArgumentError, func, byref(ci))
  57.         func.argtypes = (POINTER(c_double),)
  58.         self.assertRaises(ArgumentError, func, byref(ci))
  59.  
  60.     
  61.     def test_POINTER_c_char_arg(self):
  62.         func = testdll._testfunc_p_p
  63.         func.restype = c_char_p
  64.         func.argtypes = (POINTER(c_char),)
  65.         self.failUnlessEqual(None, func(None))
  66.         self.failUnlessEqual('123', func('123'))
  67.         self.failUnlessEqual(None, func(c_char_p(None)))
  68.         self.failUnlessEqual('123', func(c_char_p('123')))
  69.         self.failUnlessEqual('123', func(c_buffer('123')))
  70.         ca = c_char('a')
  71.         self.failUnlessEqual('a', func(pointer(ca))[0])
  72.         self.failUnlessEqual('a', func(byref(ca))[0])
  73.  
  74.     
  75.     def test_c_char_p_arg(self):
  76.         func = testdll._testfunc_p_p
  77.         func.restype = c_char_p
  78.         func.argtypes = (c_char_p,)
  79.         self.failUnlessEqual(None, func(None))
  80.         self.failUnlessEqual('123', func('123'))
  81.         self.failUnlessEqual(None, func(c_char_p(None)))
  82.         self.failUnlessEqual('123', func(c_char_p('123')))
  83.         self.failUnlessEqual('123', func(c_buffer('123')))
  84.         ca = c_char('a')
  85.         self.failUnlessEqual('a', func(pointer(ca))[0])
  86.         self.failUnlessEqual('a', func(byref(ca))[0])
  87.  
  88.     
  89.     def test_c_void_p_arg(self):
  90.         func = testdll._testfunc_p_p
  91.         func.restype = c_char_p
  92.         func.argtypes = (c_void_p,)
  93.         self.failUnlessEqual(None, func(None))
  94.         self.failUnlessEqual('123', func('123'))
  95.         self.failUnlessEqual('123', func(c_char_p('123')))
  96.         self.failUnlessEqual(None, func(c_char_p(None)))
  97.         self.failUnlessEqual('123', func(c_buffer('123')))
  98.         ca = c_char('a')
  99.         self.failUnlessEqual('a', func(pointer(ca))[0])
  100.         self.failUnlessEqual('a', func(byref(ca))[0])
  101.         func(byref(c_int()))
  102.         func(pointer(c_int()))
  103.         func(c_int * 3())
  104.         
  105.         try:
  106.             func.restype = c_wchar_p
  107.         except NameError:
  108.             pass
  109.  
  110.         self.failUnlessEqual(None, func(c_wchar_p(None)))
  111.         self.failUnlessEqual(u'123', func(c_wchar_p(u'123')))
  112.  
  113.     
  114.     def test_instance(self):
  115.         func = testdll._testfunc_p_p
  116.         func.restype = c_void_p
  117.         
  118.         class X:
  119.             _as_parameter_ = None
  120.  
  121.         func.argtypes = (c_void_p,)
  122.         self.failUnlessEqual(None, func(X()))
  123.         func.argtypes = None
  124.         self.failUnlessEqual(None, func(X()))
  125.  
  126.  
  127.  
  128. try:
  129.     c_wchar
  130. except NameError:
  131.     pass
  132.  
  133.  
  134. class WCharPointersTestCase(unittest.TestCase):
  135.     
  136.     def setUp(self):
  137.         func = testdll._testfunc_p_p
  138.         func.restype = c_int
  139.         func.argtypes = None
  140.  
  141.     
  142.     def test_POINTER_c_wchar_arg(self):
  143.         func = testdll._testfunc_p_p
  144.         func.restype = c_wchar_p
  145.         func.argtypes = (POINTER(c_wchar),)
  146.         self.failUnlessEqual(None, func(None))
  147.         self.failUnlessEqual(u'123', func(u'123'))
  148.         self.failUnlessEqual(None, func(c_wchar_p(None)))
  149.         self.failUnlessEqual(u'123', func(c_wchar_p(u'123')))
  150.         self.failUnlessEqual(u'123', func(c_wbuffer(u'123')))
  151.         ca = c_wchar('a')
  152.         self.failUnlessEqual(u'a', func(pointer(ca))[0])
  153.         self.failUnlessEqual(u'a', func(byref(ca))[0])
  154.  
  155.     
  156.     def test_c_wchar_p_arg(self):
  157.         func = testdll._testfunc_p_p
  158.         func.restype = c_wchar_p
  159.         func.argtypes = (c_wchar_p,)
  160.         c_wchar_p.from_param(u'123')
  161.         self.failUnlessEqual(None, func(None))
  162.         self.failUnlessEqual('123', func(u'123'))
  163.         self.failUnlessEqual(None, func(c_wchar_p(None)))
  164.         self.failUnlessEqual('123', func(c_wchar_p('123')))
  165.         self.failUnlessEqual('123', func(c_wbuffer('123')))
  166.         ca = c_wchar('a')
  167.         self.failUnlessEqual('a', func(pointer(ca))[0])
  168.         self.failUnlessEqual('a', func(byref(ca))[0])
  169.  
  170.  
  171.  
  172. class ArrayTest(unittest.TestCase):
  173.     
  174.     def test(self):
  175.         func = testdll._testfunc_ai8
  176.         func.restype = POINTER(c_int)
  177.         func.argtypes = (c_int * 8,)
  178.         func(c_int * 8(1, 2, 3, 4, 5, 6, 7, 8))
  179.         
  180.         def func():
  181.             pass
  182.  
  183.         CFUNCTYPE(None, c_int * 3)(func)
  184.  
  185.  
  186. if __name__ == '__main__':
  187.     unittest.main()
  188.  
  189.