[pypy-commit] pypy ffistruct: infrastructure to test type_converter.py

antocuni noreply at buildbot.pypy.org
Fri Nov 11 16:32:42 CET 2011


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: ffistruct
Changeset: r49318:69141176aa24
Date: 2011-11-10 22:27 +0100
http://bitbucket.org/pypy/pypy/changeset/69141176aa24/

Log:	infrastructure to test type_converter.py

diff --git a/pypy/module/_ffi/test/test_type_converter.py b/pypy/module/_ffi/test/test_type_converter.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_ffi/test/test_type_converter.py
@@ -0,0 +1,42 @@
+from pypy.conftest import gettestobjspace
+from pypy.module._ffi.interp_ffitype import app_types
+from pypy.module._ffi.type_converter import FromAppLevelConverter, ToAppLevelConverter
+
+class DummyFromAppLevelConverter(FromAppLevelConverter):
+
+    def handle_all(self, w_ffitype, w_obj, val):
+        self.lastval = val
+
+    handle_signed = handle_all
+    handle_unsigned = handle_all
+    handle_pointer = handle_all
+    handle_char = handle_all        
+    handle_unichar = handle_all
+    handle_longlong = handle_all
+    handle_char_p = handle_all
+    handle_unichar_p = handle_all
+    handle_float = handle_all
+    handle_singlefloat = handle_all
+    
+    def handle_struct(self, w_ffitype, w_structinstance):
+        self.lastval = w_structinstance
+
+    def convert(self, w_ffitype, w_obj):
+        self.unwrap_and_do(w_ffitype, w_obj)
+        return self.lastval
+
+
+class TestFromAppLevel(object):
+
+    def setup_class(cls):
+        cls.space = gettestobjspace(usemodules=('_ffi',))
+        converter = DummyFromAppLevelConverter(cls.space)
+        cls.from_app_level = staticmethod(converter.convert)
+
+    def check(self, w_ffitype, w_obj, expected):
+        v = self.from_app_level(w_ffitype, w_obj)
+        assert v == expected
+        assert type(v) is type(expected)
+
+    def test_int(self):
+        self.check(app_types.sint, self.space.wrap(42), 42)


More information about the pypy-commit mailing list