[pypy-commit] cffi default: A test with a global callback that we set from a Python function.

arigo noreply at buildbot.pypy.org
Fri Jun 15 20:57:13 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r376:c1ff6d753e22
Date: 2012-06-15 20:47 +0200
http://bitbucket.org/cffi/cffi/changeset/c1ff6d753e22/

Log:	A test with a global callback that we set from a Python function.
	Mildly impressive: it works out of the box.

diff --git a/testing/test_verify.py b/testing/test_verify.py
--- a/testing/test_verify.py
+++ b/testing/test_verify.py
@@ -415,3 +415,17 @@
     lib.stuff.x = -6
     assert lib.foo(0) == -42
     assert lib.foo(1) == 35
+
+def test_access_callback():
+    ffi = FFI()
+    ffi.cdef("int (*cb)(int);\n"
+             "int foo(int);")
+    lib = ffi.verify("""
+        static int g(int x) { return x * 7; }
+        static int (*cb)(int) = g;
+        static int foo(int i) { return cb(i) - 1; }
+    """)
+    assert lib.foo(6) == 41
+    my_callback = ffi.callback("int(*)(int)", lambda n: n * 222)
+    lib.cb = my_callback
+    assert lib.foo(4) == 887


More information about the pypy-commit mailing list