4
class SimpleTestCase(unittest.TestCase):
7
self.assertEqual(x._objects, None)
9
self.assertEqual(x._objects, None)
11
self.assertEqual(x._objects, None)
13
def test_ccharp(self):
15
self.assertEqual(x._objects, None)
17
self.assertEqual(x._objects, b"abc")
19
self.assertEqual(x._objects, b"spam")
21
class StructureTestCase(unittest.TestCase):
22
def test_cint_struct(self):
24
_fields_ = [("a", c_int),
28
self.assertEqual(x._objects, None)
31
self.assertEqual(x._objects, None)
33
def test_ccharp_struct(self):
35
_fields_ = [("a", c_char_p),
38
self.assertEqual(x._objects, None)
42
self.assertEqual(x._objects, {"0": b"spam", "1": b"foo"})
44
def test_struct_struct(self):
45
class POINT(Structure):
46
_fields_ = [("x", c_int), ("y", c_int)]
47
class RECT(Structure):
48
_fields_ = [("ul", POINT), ("lr", POINT)]
55
self.assertEqual(r._objects, None)
60
self.assertEqual(r._objects, {'0': {}})
63
self.assertEqual(r._objects, {'0': {}})
65
self.assertEqual(r._objects, {'0': {}, '1': {}})
67
class ArrayTestCase(unittest.TestCase):
68
def test_cint_array(self):
72
self.assertEqual(ia._objects, None)
76
self.assertEqual(ia._objects, None)
79
_fields_ = [("x", c_int),
86
self.assertEqual(x._objects, None)
88
self.assertEqual(x._objects, {'1': {}})
90
class PointerTestCase(unittest.TestCase):
91
def test_p_cint(self):
94
self.assertEqual(x._objects, {'1': i})
96
class DeletePointerTestCase(unittest.TestCase):
99
_fields_ = [("p", POINTER(c_char_p))]
101
i = c_char_p("abc def")
102
from sys import getrefcount as grc
111
## print "2?", grc(i)
127
class PointerToStructure(unittest.TestCase):
129
class POINT(Structure):
130
_fields_ = [("x", c_int), ("y", c_int)]
131
class RECT(Structure):
132
_fields_ = [("a", POINTER(POINT)),
133
("b", POINTER(POINT))]
139
## from pprint import pprint as pp
146
# to avoid leaking when tests are run several times
147
# clean up the types left in the cache.
148
from ctypes import _pointer_type_cache
149
del _pointer_type_cache[POINT]
151
if __name__ == "__main__":