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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from ctypes import *
  5. import unittest
  6.  
  7. class SimpleTestCase(unittest.TestCase):
  8.     
  9.     def test_cint(self):
  10.         x = c_int()
  11.         self.assertEquals(x._objects, None)
  12.         x.value = 42
  13.         self.assertEquals(x._objects, None)
  14.         x = c_int(99)
  15.         self.assertEquals(x._objects, None)
  16.  
  17.     
  18.     def test_ccharp(self):
  19.         x = c_char_p()
  20.         self.assertEquals(x._objects, None)
  21.         x.value = 'abc'
  22.         self.assertEquals(x._objects, 'abc')
  23.         x = c_char_p('spam')
  24.         self.assertEquals(x._objects, 'spam')
  25.  
  26.  
  27.  
  28. class StructureTestCase(unittest.TestCase):
  29.     
  30.     def test_cint_struct(self):
  31.         
  32.         class X(Structure):
  33.             _fields_ = [
  34.                 ('a', c_int),
  35.                 ('b', c_int)]
  36.  
  37.         x = X()
  38.         self.assertEquals(x._objects, None)
  39.         x.a = 42
  40.         x.b = 99
  41.         self.assertEquals(x._objects, None)
  42.  
  43.     
  44.     def test_ccharp_struct(self):
  45.         
  46.         class X(Structure):
  47.             _fields_ = [
  48.                 ('a', c_char_p),
  49.                 ('b', c_char_p)]
  50.  
  51.         x = X()
  52.         self.assertEquals(x._objects, None)
  53.         x.a = 'spam'
  54.         x.b = 'foo'
  55.         self.assertEquals(x._objects, {
  56.             '0': 'spam',
  57.             '1': 'foo' })
  58.  
  59.     
  60.     def test_struct_struct(self):
  61.         
  62.         class POINT(Structure):
  63.             _fields_ = [
  64.                 ('x', c_int),
  65.                 ('y', c_int)]
  66.  
  67.         
  68.         class RECT((Structure,)):
  69.             _fields_ = [
  70.                 ('ul', POINT),
  71.                 ('lr', POINT)]
  72.  
  73.         r = RECT()
  74.         r.ul.x = 0
  75.         r.ul.y = 1
  76.         r.lr.x = 2
  77.         r.lr.y = 3
  78.         self.assertEquals(r._objects, None)
  79.         r = RECT()
  80.         pt = POINT(1, 2)
  81.         r.ul = pt
  82.         self.assertEquals(r._objects, {
  83.             '0': { } })
  84.         r.ul.x = 22
  85.         r.ul.y = 44
  86.         self.assertEquals(r._objects, {
  87.             '0': { } })
  88.         r.lr = POINT()
  89.         self.assertEquals(r._objects, {
  90.             '0': { },
  91.             '1': { } })
  92.  
  93.  
  94.  
  95. class ArrayTestCase(unittest.TestCase):
  96.     
  97.     def test_cint_array(self):
  98.         INTARR = c_int * 3
  99.         ia = INTARR()
  100.         self.assertEquals(ia._objects, None)
  101.         ia[0] = 1
  102.         ia[1] = 2
  103.         ia[2] = 3
  104.         self.assertEquals(ia._objects, None)
  105.         
  106.         class X((Structure,)):
  107.             _fields_ = [
  108.                 ('x', c_int),
  109.                 ('a', INTARR)]
  110.  
  111.         x = X()
  112.         x.x = 1000
  113.         x.a[0] = 42
  114.         x.a[1] = 96
  115.         self.assertEquals(x._objects, None)
  116.         x.a = ia
  117.         self.assertEquals(x._objects, {
  118.             '1': { } })
  119.  
  120.  
  121.  
  122. class PointerTestCase(unittest.TestCase):
  123.     
  124.     def test_p_cint(self):
  125.         i = c_int(42)
  126.         x = pointer(i)
  127.         self.failUnlessEqual(x._objects, {
  128.             '1': i })
  129.  
  130.  
  131.  
  132. class DeletePointerTestCase(unittest.TestCase):
  133.     
  134.     def X_test(self):
  135.         
  136.         class X(Structure):
  137.             _fields_ = [
  138.                 ('p', POINTER(c_char_p))]
  139.  
  140.         x = X()
  141.         i = c_char_p('abc def')
  142.         grc = getrefcount
  143.         import sys
  144.         print '2?', grc(i)
  145.         x.p = pointer(i)
  146.         print '3?', grc(i)
  147.         for i in range(320):
  148.             c_int(99)
  149.             x.p[0]
  150.         
  151.         print x.p[0]
  152.         import gc
  153.         gc.collect()
  154.         for i in range(320):
  155.             c_int(99)
  156.             x.p[0]
  157.         
  158.         print x.p[0]
  159.         print x.p.contents
  160.         x.p[0] = 'spam spam'
  161.         print '+' * 42
  162.         print x._objects
  163.  
  164.  
  165.  
  166. class PointerToStructure(unittest.TestCase):
  167.     
  168.     def test(self):
  169.         
  170.         class POINT(Structure):
  171.             _fields_ = [
  172.                 ('x', c_int),
  173.                 ('y', c_int)]
  174.  
  175.         
  176.         class RECT((Structure,)):
  177.             _fields_ = [
  178.                 ('a', POINTER(POINT)),
  179.                 ('b', POINTER(POINT))]
  180.  
  181.         r = RECT()
  182.         p1 = POINT(1, 2)
  183.         r.a = pointer(p1)
  184.         r.b = pointer(p1)
  185.         r.a[0].x = 42
  186.         r.a[0].y = 99
  187.         _pointer_type_cache = _pointer_type_cache
  188.         import ctypes
  189.         del _pointer_type_cache[POINT]
  190.  
  191.  
  192. if __name__ == '__main__':
  193.     unittest.main()
  194.  
  195.