diff options
| author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2016-08-05 20:43:25 (GMT) |
|---|---|---|
| committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2016-08-05 20:43:25 (GMT) |
| commit | a0b2568627e061f9dd8a31df665e97fdcf4b531d (patch) | |
| tree | 3ae2adb181ab3b0ea5a9579571c502f805b966ac /Lib | |
| parent | c6c2217f2770c3791310a930a05eb4e60bb33282 (diff) | |
| parent | 6f25003291610fd7696aa09b725742a499d6b2cf (diff) | |
| download | cpython-a0b2568627e061f9dd8a31df665e97fdcf4b531d.zip cpython-a0b2568627e061f9dd8a31df665e97fdcf4b531d.tar.gz cpython-a0b2568627e061f9dd8a31df665e97fdcf4b531d.tar.bz2 | |
Issue #20160: Merged fix from 3.3.
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/ctypes/test/test_callbacks.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py index 3824f7c..8eac58f 100644 --- a/Lib/ctypes/test/test_callbacks.py +++ b/Lib/ctypes/test/test_callbacks.py @@ -1,3 +1,4 @@ +import functools import unittest from ctypes import * from ctypes.test import need_symbol @@ -240,6 +241,40 @@ class SampleCallbacksTestCase(unittest.TestCase): self.assertEqual(result, callback(1.1*1.1, 2.2*2.2, 3.3*3.3, 4.4*4.4, 5.5*5.5)) + def test_callback_large_struct(self): + class Check: pass + + class X(Structure): + _fields_ = [ + ('first', c_ulong), + ('second', c_ulong), + ('third', c_ulong), + ] + + def callback(check, s): + check.first = s.first + check.second = s.second + check.third = s.third + + check = Check() + s = X() + s.first = 0xdeadbeef + s.second = 0xcafebabe + s.third = 0x0bad1dea + + CALLBACK = CFUNCTYPE(None, X) + dll = CDLL(_ctypes_test.__file__) + func = dll._testfunc_cbk_large_struct + func.argtypes = (X, CALLBACK) + func.restype = None + # the function just calls the callback with the passed structure + func(s, CALLBACK(functools.partial(callback, check))) + self.assertEqual(check.first, s.first) + self.assertEqual(check.second, s.second) + self.assertEqual(check.third, s.third) + self.assertEqual(check.first, 0xdeadbeef) + self.assertEqual(check.second, 0xcafebabe) + self.assertEqual(check.third, 0x0bad1dea) ################################################################ |
