Author: Armin Rigo <[email protected]>
Branch:
Changeset: r77332:c13a99bb78fd
Date: 2015-05-15 15:01 +0200
http://bitbucket.org/pypy/pypy/changeset/c13a99bb78fd/
Log: more tests
diff --git a/rpython/jit/metainterp/test/test_fficall.py
b/rpython/jit/metainterp/test/test_fficall.py
--- a/rpython/jit/metainterp/test/test_fficall.py
+++ b/rpython/jit/metainterp/test/test_fficall.py
@@ -53,8 +53,15 @@
cif_description = get_description(atypes, rtype)
+ expected_args = []
+ for avalue in avalues:
+ if lltype.typeOf(avalue) == rffi.ULONG:
+ avalue = intmask(avalue)
+ expected_args.append(avalue)
+ expected_args = tuple(expected_args)
+
def verify(*args):
- assert args == tuple(avalues)
+ assert args == expected_args
return rvalue
FUNC = lltype.FuncType([lltype.typeOf(avalue) for avalue in avalues],
lltype.typeOf(rvalue))
@@ -76,6 +83,10 @@
if lltype.typeOf(avalue) is lltype.SingleFloat:
got = float(got)
avalue = float(avalue)
+ elif (lltype.typeOf(avalue) is rffi.SIGNEDCHAR or
+ lltype.typeOf(avalue) is rffi.UCHAR):
+ got = intmask(got)
+ avalue = intmask(avalue)
assert got == avalue
ofs += 16
if rvalue is not None:
@@ -115,6 +126,9 @@
return res == 654321
if isinstance(rvalue, r_singlefloat):
rvalue = float(rvalue)
+ if lltype.typeOf(rvalue) is rffi.ULONG:
+ res = intmask(res)
+ rvalue = intmask(rvalue)
return res == rvalue
with FakeFFI(fake_call_impl_any):
@@ -187,9 +201,20 @@
self._run([types.signed] * 2, types.void, [456, 789], None)
def test_returns_signedchar(self):
- self._run([types.signed], types.sint8, [456],
+ self._run([types.sint8], types.sint8,
+ [rffi.cast(rffi.SIGNEDCHAR, -28)],
rffi.cast(rffi.SIGNEDCHAR, -42))
+ def test_handle_unsigned(self):
+ self._run([types.ulong], types.ulong,
+ [rffi.cast(rffi.ULONG, sys.maxint + 91348)],
+ rffi.cast(rffi.ULONG, sys.maxint + 4242))
+
+ def test_handle_unsignedchar(self):
+ self._run([types.uint8], types.uint8,
+ [rffi.cast(rffi.UCHAR, 191)],
+ rffi.cast(rffi.UCHAR, 180))
+
def _add_libffi_types_to_ll2types_maybe(self):
# not necessary on the llgraph backend, but needed for x86.
# see rpython/jit/backend/x86/test/test_fficall.py
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit