[pypy-svn] r21798 - in pypy/dist/pypy/translator/js: . test

ericvrp at codespeak.net ericvrp at codespeak.net
Sat Jan 7 20:47:20 CET 2006


Author: ericvrp
Date: Sat Jan  7 20:47:19 2006
New Revision: 21798

Added:
   pypy/dist/pypy/translator/js/test/test_merge_if_blocks.py
Modified:
   pypy/dist/pypy/translator/js/codewriter.py
Log:
genjs tests for if->switch support


Modified: pypy/dist/pypy/translator/js/codewriter.py
==============================================================================
--- pypy/dist/pypy/translator/js/codewriter.py	(original)
+++ pypy/dist/pypy/translator/js/codewriter.py	Sat Jan  7 20:47:19 2006
@@ -140,8 +140,6 @@
         labels = ','.join(["'%s':%s" % (value, label) for value, label in value_labels])
         #XXX for performance this Object should become global
         self.append("if (!(block = {%s}[%s])) block = %s" % (labels, cond, defaultdest))
-        self._goto_block('block')
-        self.skip_closeblock() 
 
     def openfunc(self, decl, funcnode, blocks): 
         self.decl     = decl

Added: pypy/dist/pypy/translator/js/test/test_merge_if_blocks.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js/test/test_merge_if_blocks.py	Sat Jan  7 20:47:19 2006
@@ -0,0 +1,83 @@
+import py
+
+from pypy.translator.js.test.runtest import compile_function 
+
+import sys
+
+def test_merge_if_blocks_simple():
+    def merge_if_blocks_simple(i):
+        if i == 5:
+            return 1005
+        else:
+            return 2222
+    simple = compile_function(merge_if_blocks_simple, [int])
+    for i in range(-20,20):
+        assert simple(i) == merge_if_blocks_simple(i)
+
+def test_merge_if_blocks_basic():
+    py.skip("merge_if_block failing because link exit values are not used")
+    def merge_if_blocks_basic(i):
+        if i == 5:
+            return 1005
+        elif i == 8:
+            return 1008
+        return 2222
+    basic  = compile_function(merge_if_blocks_basic , [int], view=True)
+    for i in range(-20,20):
+        assert basic(i) == merge_if_blocks_basic(i)
+
+def test_merge_if_blocks_chr():
+    py.skip("merge_if_block failing because link exit values are not used")
+    def merge_if_blocks_chr(i):
+        c = chr(i)
+        if c == '\x05':
+            return 1005
+        elif c == '!':
+            return 1008
+        return 2222
+    basic  = compile_function(merge_if_blocks_chr , [int])
+    for i in range(0, 50):
+        assert basic(i) == merge_if_blocks_chr(i)
+
+def test_merge_if_blocks_uni():
+    py.skip("merge_if_block failing because link exit values are not used")
+    def merge_if_blocks_uni(i):
+        c = unichr(i)
+        if c == u'\x05':
+            return 1005
+        elif c == u'!':
+            return 1008
+        return 2222
+    basic  = compile_function(merge_if_blocks_uni , [int])
+    for i in range(0, 50):
+        assert basic(i) == merge_if_blocks_uni(i)
+
+
+def test_merge_if_blocks_many():
+    py.skip("merge_if_block failing because link exit values are not used")
+    def merge_if_blocks_many(i):
+        if i == 0:
+            return 1000 
+        elif i == 1:
+            return 1001
+        elif i == 2:
+            return 1002
+        elif i == 3:
+            return 1003
+        elif i == 4:
+            return 1004
+        elif i == 5:
+            return 1005
+        elif i == 6:
+            return 1006
+        elif i == 7:
+            return 1007
+        elif i == 8:
+            return 1008
+        elif i == 9:
+            return 1009
+        else:
+            return 2222
+    many   = compile_function(merge_if_blocks_many  , [int])
+    for i in range(-20,20):
+        assert many(i)   == merge_if_blocks_many(i)



More information about the Pypy-commit mailing list