summaryrefslogtreecommitdiff
path: root/lib/python2.7/ctypes/test/test_internals.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/ctypes/test/test_internals.py')
-rw-r--r--lib/python2.7/ctypes/test/test_internals.py103
1 files changed, 0 insertions, 103 deletions
diff --git a/lib/python2.7/ctypes/test/test_internals.py b/lib/python2.7/ctypes/test/test_internals.py
deleted file mode 100644
index 2e5b1fe..0000000
--- a/lib/python2.7/ctypes/test/test_internals.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# This tests the internal _objects attribute
-import unittest
-from ctypes import *
-from sys import getrefcount as grc
-
-# XXX This test must be reviewed for correctness!!!
-
-"""
-ctypes' types are container types.
-
-They have an internal memory block, which only consists of some bytes,
-but it has to keep references to other objects as well. This is not
-really needed for trivial C types like int or char, but it is important
-for aggregate types like strings or pointers in particular.
-
-What about pointers?
-
-"""
-
-class ObjectsTestCase(unittest.TestCase):
- def assertSame(self, a, b):
- self.assertEqual(id(a), id(b))
-
- def test_ints(self):
- i = 42000123
- refcnt = grc(i)
- ci = c_int(i)
- self.assertEqual(refcnt, grc(i))
- self.assertEqual(ci._objects, None)
-
- def test_c_char_p(self):
- s = "Hello, World"
- refcnt = grc(s)
- cs = c_char_p(s)
- self.assertEqual(refcnt + 1, grc(s))
- self.assertSame(cs._objects, s)
-
- def test_simple_struct(self):
- class X(Structure):
- _fields_ = [("a", c_int), ("b", c_int)]
-
- a = 421234
- b = 421235
- x = X()
- self.assertEqual(x._objects, None)
- x.a = a
- x.b = b
- self.assertEqual(x._objects, None)
-
- def test_embedded_structs(self):
- class X(Structure):
- _fields_ = [("a", c_int), ("b", c_int)]
-
- class Y(Structure):
- _fields_ = [("x", X), ("y", X)]
-
- y = Y()
- self.assertEqual(y._objects, None)
-
- x1, x2 = X(), X()
- y.x, y.y = x1, x2
- self.assertEqual(y._objects, {"0": {}, "1": {}})
- x1.a, x2.b = 42, 93
- self.assertEqual(y._objects, {"0": {}, "1": {}})
-
- def test_xxx(self):
- class X(Structure):
- _fields_ = [("a", c_char_p), ("b", c_char_p)]
-
- class Y(Structure):
- _fields_ = [("x", X), ("y", X)]
-
- s1 = "Hello, World"
- s2 = "Hallo, Welt"
-
- x = X()
- x.a = s1
- x.b = s2
- self.assertEqual(x._objects, {"0": s1, "1": s2})
-
- y = Y()
- y.x = x
- self.assertEqual(y._objects, {"0": {"0": s1, "1": s2}})
-## x = y.x
-## del y
-## print x._b_base_._objects
-
- def test_ptr_struct(self):
- class X(Structure):
- _fields_ = [("data", POINTER(c_int))]
-
- A = c_int*4
- a = A(11, 22, 33, 44)
- self.assertEqual(a._objects, None)
-
- x = X()
- x.data = a
-##XXX print x._objects
-##XXX print x.data[0]
-##XXX print x.data._objects
-
-if __name__ == '__main__':
- unittest.main()