1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
import py, math
from rpython.rtyper.lltypesystem.module.test.math_cases import (MathTests,
get_tester)
from rpython.translator.c.test.test_standalone import StandaloneTests
from rpython.rlib import rfloat
def get_test_case((fnname, args, expected)):
try:
fn = getattr(math, fnname)
except AttributeError:
fn = getattr(rfloat, fnname)
expect_valueerror = (expected == ValueError)
expect_overflowerror = (expected == OverflowError)
check = get_tester(expected)
#
def testfn():
try:
got = fn(*args)
except ValueError:
return expect_valueerror
except OverflowError:
return expect_overflowerror
else:
return check(got)
#
testfn.func_name = 'test_' + fnname
return testfn
testfnlist = [get_test_case(testcase)
for testcase in MathTests.TESTCASES]
reprlist = [repr(testcase)
for testcase in MathTests.TESTCASES]
def fn(args):
err = False
for i in range(len(testfnlist)):
testfn = testfnlist[i]
if not testfn():
print "error:", reprlist[i]
err = True
if not err:
print "all ok"
return 0
class TestMath(StandaloneTests):
def test_math(self, debug=True):
t, cbuilder = self.compile(fn, debug=debug)
data = cbuilder.cmdexec('')
if "error:" in data:
py.test.fail(data.strip())
else:
assert "all ok" in data
def test_math_nodebug(self):
self.test_math(debug=False)
|