[pypy-svn] r57673 - pypy/branch/oo-jit/pypy/translator/cli/test

antocuni at codespeak.net antocuni at codespeak.net
Fri Aug 29 12:02:52 CEST 2008


Author: antocuni
Date: Fri Aug 29 12:02:49 2008
New Revision: 57673

Modified:
   pypy/branch/oo-jit/pypy/translator/cli/test/runtest.py
   pypy/branch/oo-jit/pypy/translator/cli/test/test_runtest.py
Log:
add support to pass strings as input arguments to compiled functions



Modified: pypy/branch/oo-jit/pypy/translator/cli/test/runtest.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/cli/test/runtest.py	(original)
+++ pypy/branch/oo-jit/pypy/translator/cli/test/runtest.py	Fri Aug 29 12:02:49 2008
@@ -8,7 +8,7 @@
 from pypy.rpython.test.tool import BaseRtypingTest, OORtypeMixin
 from pypy.rpython.lltypesystem.lltype import typeOf
 from pypy.rpython.ootypesystem import ootype
-from pypy.annotation.model import lltype_to_annotation
+from pypy.annotation.model import lltype_to_annotation, SomeString
 from pypy.translator.backendopt.all import backend_optimizations
 from pypy.translator.backendopt.checkvirtual import check_virtual_methods
 from pypy.rpython.ootypesystem import ootype
@@ -132,6 +132,7 @@
             CTS.types.uint64: 'ToUInt64',
             CTS.types.bool: 'ToBoolean',
             CTS.types.char: 'ToChar',
+            CTS.types.string: 'ToString',
             }
 
         try:
@@ -264,6 +265,12 @@
     def __repr__(self):
         return 'ExceptionWrapper(%s)' % repr(self.class_name)
 
+def get_annotation(x):
+    if isinstance(x, basestring) and len(x) > 1:
+        return SomeString()
+    else:
+        return lltype_to_annotation(typeOf(x))
+
 class CliTest(BaseRtypingTest, OORtypeMixin):
     def __init__(self):
         self._func = None
@@ -272,7 +279,7 @@
 
     def _compile(self, fn, args, ann=None, backendopt=True, auto_raise_exc=False, exctrans=False):
         if ann is None:
-            ann = [lltype_to_annotation(typeOf(x)) for x in args]
+            ann = [get_annotation(x) for x in args]
         if self._func is fn and self._ann == ann:
             return self._cli_func
         else:

Modified: pypy/branch/oo-jit/pypy/translator/cli/test/test_runtest.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/cli/test/test_runtest.py	(original)
+++ pypy/branch/oo-jit/pypy/translator/cli/test/test_runtest.py	Fri Aug 29 12:02:49 2008
@@ -15,4 +15,10 @@
             return a0
         res = self.interpret(fn, [42]*10)
         assert res == 42
-    
+
+    def test_input_string(self):
+        def fn(s):
+            return len(s)
+
+        res = self.interpret(fn, ["hello"])
+        assert res == 5



More information about the Pypy-commit mailing list