# [pypy-svn] pypy default: simplify these two tests by automatically computing the result instead of using complex logic for it

Thu Mar 17 18:04:04 CET 2011

```Author: Antonio Cuni <anto.cuni at gmail.com>
Branch:
Changeset: r42736:0758b2b0a2e5
Date: 2011-03-17 17:15 +0100
http://bitbucket.org/pypy/pypy/changeset/0758b2b0a2e5/

Log:	simplify these two tests by automatically computing the result
instead of using complex logic for it

diff --git a/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py b/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
--- a/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
@@ -830,23 +830,10 @@
test only checks that we get the expected result, not that any
optimization has been applied.
"""
-
-        def opval(i, op, a):
-            if eval('%d %s %d' % (i, op, a)): return 1
-            return 2
-
ops = ('<', '>', '<=', '>=', '==', '!=')
for op1 in ops:
for op2 in ops:
for a,b in ((500, 500), (300, 600)):
-                    res = 0
-                    res += opval(a-1, op1, a) * (a)
-                    res += opval(  a, op1, a)
-                    res += opval(a+1, op1, a) * (1000 - a - 1)
-                    res += opval(b-1, op2, b) * 10000 * (b)
-                    res += opval(  b, op2, b) * 10000
-                    res += opval(b+1, op2, b) * 10000 * (1000 - b - 1)
-
src = """
def main():
sa = 0
@@ -861,10 +848,7 @@
sa += 20000
return sa
""" % (op1, a, op2, b)
-                    log = self.run(src, threshold=400)
-                    assert log.result == res
-                    # check that the JIT actually ran
-                    assert len(log.loops_by_filename(self.filepath)) > 0
+                    self.run_and_check(src, threshold=400)

src = """
def main():
@@ -882,10 +866,7 @@
i += 0.25
return sa
""" % (op1, float(a)/4.0, op2, float(b)/4.0)
-                    log = self.run(src, threshold=400)
-                    assert log.result == res
-                    # check that the JIT actually ran
-                    assert len(log.loops_by_filename(self.filepath)) > 0
+                    self.run_and_check(src, threshold=400)

def test_boolrewrite_allcases_reflex(self):
@@ -899,23 +880,10 @@
test only checks that we get the expected result, not that any
optimization has been applied.
"""
-
-        def opval(i, op, a):
-            if eval('%d %s %d' % (i, op, a)): return 1
-            return 2
-
ops = ('<', '>', '<=', '>=', '==', '!=')
for op1 in ops:
for op2 in ops:
for a,b in ((500, 500), (300, 600)):
-                    res = 0
-                    res += opval(a-1, op1, a) * (a)
-                    res += opval(  a, op1, a)
-                    res += opval(a+1, op1, a) * (1000 - a - 1)
-                    res += opval(b, op2, b-1) * 10000 * (b)
-                    res += opval(b, op2,   b) * 10000
-                    res += opval(b, op2, b+1) * 10000 * (1000 - b - 1)
-
src = """
def main():
sa = 0
@@ -930,11 +898,7 @@
sa += 20000
return sa
""" % (op1, a, b, op2)
-                    log = self.run(src)
-                    log = self.run(src, threshold=400)
-                    assert log.result == res
-                    # check that the JIT actually ran
-                    assert len(log.loops_by_filename(self.filepath)) > 0
+                    self.run_and_check(src, threshold=400)

src = """
def main():
@@ -952,8 +916,4 @@
i += 0.25
return sa
""" % (op1, float(a)/4.0, float(b)/4.0, op2)
-                    log = self.run(src, threshold=400)
-                    assert log.result == res
-                    # check that the JIT actually ran
-                    assert len(log.loops_by_filename(self.filepath)) > 0
-
+                    self.run_and_check(src, threshold=400)

diff --git a/pypy/module/pypyjit/test_pypy_c/test_model.py b/pypy/module/pypyjit/test_pypy_c/test_model.py
--- a/pypy/module/pypyjit/test_pypy_c/test_model.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_model.py
@@ -63,6 +63,13 @@
log.result = eval(stdout)
return log

+    def run_and_check(self, src, args=[], **jitopts):
+        log1 = self.run(src, args, threshold=-1)  # without the JIT
+        log2 = self.run(src, args, **jitopts)     # with the JIT
+        assert log1.result == log2.result
+        # check that the JIT actually ran
+        assert len(log2.loops_by_filename(self.filepath)) > 0
+

class TestLog(object):

```