[pypy-commit] pypy math-improvements: Add more passing tests.
Alexander Schremmer
pypy.commits at gmail.com
Mon Feb 4 09:39:46 EST 2019
Author: Alexander Schremmer <alex AT alexanderweb DOT de>
Branch: math-improvements
Changeset: r95791:5657b4134c73
Date: 2019-02-04 15:38 +0100
http://bitbucket.org/pypy/pypy/changeset/5657b4134c73/
Log: Add more passing tests.
diff --git a/rpython/rlib/test/test_rbigint.py b/rpython/rlib/test/test_rbigint.py
--- a/rpython/rlib/test/test_rbigint.py
+++ b/rpython/rlib/test/test_rbigint.py
@@ -129,6 +129,12 @@
assert res2.tolong() == -1L
assert res3.tolong() == -1L
+ def test_floordiv2(self):
+ n1 = rbigint.fromlong(sys.maxint + 1)
+ n2 = rbigint.fromlong(-(sys.maxint + 1))
+ assert n1.floordiv(n2).tolong() == -1L
+ assert n2.floordiv(n1).tolong() == -1L
+
def test_truediv(self):
for op1 in gen_signs(long_vals_not_too_big):
rl_op1 = rbigint.fromlong(op1)
@@ -1149,8 +1155,14 @@
except Exception as e:
pytest.raises(type(e), f1.pow, f2, f3)
else:
- v = f1.pow(f2, f3)
- assert v.tolong() == res
+ v1 = f1.pow(f2, f3)
+ try:
+ v2 = f1.int_pow(f2.toint(), f3)
+ except OverflowError:
+ pass
+ else:
+ assert v2.tolong() == res
+ assert v1.tolong() == res
@given(biglongs, biglongs)
@example(510439143470502793407446782273075179618477362188870662225920,
@@ -1212,19 +1224,34 @@
assert ra.truediv(rb) == a / b
@given(longs, longs)
- def test_bitwise(self, x, y):
+ def test_bitwise_and_mul(self, x, y):
lx = rbigint.fromlong(x)
ly = rbigint.fromlong(y)
- for mod in "xor and_ or_".split():
- res1 = getattr(lx, mod)(ly).tolong()
+ for mod in "xor and_ or_ mul".split():
+ res1a = getattr(lx, mod)(ly).tolong()
+ res1b = getattr(ly, mod)(lx).tolong()
+ res2 = getattr(operator, mod)(x, y)
+ assert res1a == res2
+
+ @given(longs, ints)
+ def test_int_bitwise_and_mul(self, x, y):
+ lx = rbigint.fromlong(x)
+ for mod in "xor and_ or_ mul".split():
+ res1 = getattr(lx, 'int_' + mod)(y).tolong()
res2 = getattr(operator, mod)(x, y)
assert res1 == res2
@given(longs, ints)
- def test_int_bitwise(self, x, y):
+ def test_int_comparison(self, x, y):
lx = rbigint.fromlong(x)
- for mod in "xor and_ or_".split():
- res1 = getattr(lx, 'int_' + mod)(y).tolong()
- res2 = getattr(operator, mod)(x, y)
- assert res1 == res2
+ assert lx.int_lt(y) == (x < y)
+ assert lx.int_eq(y) == (x == y)
+ assert lx.int_le(y) == (x <= y)
+ @given(longs, longs)
+ def test_int_comparison(self, x, y):
+ lx = rbigint.fromlong(x)
+ ly = rbigint.fromlong(y)
+ assert lx.lt(ly) == (x < y)
+ assert lx.eq(ly) == (x == y)
+ assert lx.le(ly) == (x <= y)
More information about the pypy-commit
mailing list