[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