[pypy-commit] pypy default: cherry-pick some of the test from math-improvements to default
cfbolz
pypy.commits at gmail.com
Thu Dec 13 13:56:53 EST 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch:
Changeset: r95476:a838af77f2af
Date: 2018-12-13 13:25 +0100
http://bitbucket.org/pypy/pypy/changeset/a838af77f2af/
Log: cherry-pick some of the test from math-improvements to default
diff --git a/pypy/objspace/std/test/test_intobject.py b/pypy/objspace/std/test/test_intobject.py
--- a/pypy/objspace/std/test/test_intobject.py
+++ b/pypy/objspace/std/test/test_intobject.py
@@ -671,6 +671,13 @@
assert type(x) is int
assert str(x) == "0"
+ def test_binop_overflow(self):
+ x = int(2)
+ assert x.__lshift__(128) == 680564733841876926926749214863536422912L
+
+ def test_rbinop_overflow(self):
+ x = int(321)
+ assert x.__rlshift__(333) == 1422567365923326114875084456308921708325401211889530744784729710809598337369906606315292749899759616L
class AppTestIntShortcut(AppTestInt):
spaceconfig = {"objspace.std.intshortcut": True}
diff --git a/pypy/objspace/std/test/test_longobject.py b/pypy/objspace/std/test/test_longobject.py
--- a/pypy/objspace/std/test/test_longobject.py
+++ b/pypy/objspace/std/test/test_longobject.py
@@ -2,7 +2,6 @@
from pypy.objspace.std import longobject as lobj
from rpython.rlib.rbigint import rbigint
-
class TestW_LongObject:
def test_bigint_w(self):
space = self.space
@@ -52,8 +51,9 @@
assert x + 2 + 3L + True == -14L
def test_sub(self):
- x = 58543L
- assert int(x - 12332L) == 58543 - 12332
+ assert int(58543L - 12332L) == 58543 - 12332
+ assert int(58543L - 12332) == 58543 - 12332
+ assert int(58543 - 12332L) == 58543 - 12332
x = 237123838281233L
assert x * 12 == x * 12L
@@ -70,6 +70,23 @@
a = x // 10000000L
assert a == 3L
+ def test_int_floordiv(self):
+ import sys
+
+ x = 3000L
+ a = x // 1000
+ assert a == 3L
+
+ x = 3000L
+ a = x // -1000
+ assert a == -3L
+
+ x = 3000L
+ raises(ZeroDivisionError, "x // 0")
+
+ n = sys.maxint+1
+ assert n / int(-n) == -1L
+
def test_numerator_denominator(self):
assert (1L).numerator == 1L
assert (1L).denominator == 1L
@@ -79,25 +96,27 @@
def test_compare(self):
Z = 0
ZL = 0L
+
+ assert Z == ZL
+ assert not (Z != ZL)
+ assert ZL == Z
+ assert not (ZL != Z)
+ assert Z <= ZL
+ assert not (Z < ZL)
+ assert ZL <= ZL
+ assert not (ZL < ZL)
+
for BIG in (1L, 1L << 62, 1L << 9999):
- assert Z == ZL
- assert not (Z != ZL)
- assert ZL == Z
- assert not (ZL != Z)
assert not (Z == BIG)
assert Z != BIG
assert not (BIG == Z)
assert BIG != Z
assert not (ZL == BIG)
assert ZL != BIG
- assert Z <= ZL
- assert not (Z < ZL)
assert Z <= BIG
assert Z < BIG
assert not (BIG <= Z)
assert not (BIG < Z)
- assert ZL <= ZL
- assert not (ZL < ZL)
assert ZL <= BIG
assert ZL < BIG
assert not (BIG <= ZL)
@@ -171,10 +190,38 @@
assert type(-long2(0)) is long
assert type(long2(5) // 1) is long
+ def test_shift(self):
+ assert 65l >> 2l == 16l
+ assert 65l >> 2 == 16l
+ assert 65 >> 2l == 16l
+ assert 65l << 2l == 65l * 4
+ assert 65l << 2 == 65l * 4
+ assert 65 << 2l == 65l * 4
+ raises(ValueError, "1L << -1L")
+ raises(ValueError, "1L << -1")
+ raises(OverflowError, "1L << (2 ** 100)")
+ raises(ValueError, "1L >> -1L")
+ raises(ValueError, "1L >> -1")
+ raises(OverflowError, "1L >> (2 ** 100)")
+
def test_pow(self):
x = 0L
assert pow(x, 0L, 1L) == 0L
assert pow(-1L, -1L) == -1.0
+ assert pow(2 ** 68, 0.5) == 2.0 ** 34
+ assert pow(2 ** 68, 2) == 2 ** 136
+ raises(TypeError, pow, 2l, -1, 3)
+ raises(ValueError, pow, 2l, 5, 0)
+
+ # some rpow tests
+ assert pow(0, 0L, 1L) == 0L
+ assert pow(-1, -1L) == -1.0
+
+ def test_int_pow(self):
+ x = 2L
+ assert pow(x, 2) == 4L
+ assert pow(x, 2, 2) == 0L
+ assert pow(x, 2, 3L) == 1L
def test_getnewargs(self):
assert 0L .__getnewargs__() == (0L,)
@@ -185,8 +232,8 @@
q, r = divmod(x, y)
pab, pba = x*y, y*x
assert pab == pba
- assert q == x//y
- assert r == x%y
+ assert q == x // y
+ assert r == x % y
assert x == q*y + r
if y > 0:
assert 0 <= r < y
@@ -196,6 +243,8 @@
for y in [-105566530L, -1L, 1L, 1034522340L]:
print "checking division for %s, %s" % (x, y)
check_division(x, y)
+ check_division(x, int(y))
+ check_division(int(x), y)
# special case from python tests:
s1 = 33
s2 = 2
@@ -207,6 +256,16 @@
y = 0x9800FFC1L
check_division(x, y)
raises(ZeroDivisionError, "x // 0L")
+ raises(ZeroDivisionError, "x % 0L")
+ raises(ZeroDivisionError, divmod, x, 0L)
+ raises(ZeroDivisionError, "x // 0")
+ raises(ZeroDivisionError, "x % 0")
+ raises(ZeroDivisionError, divmod, x, 0)
+
+ def test_int_divmod(self):
+ q, r = divmod(100L, 11)
+ assert q == 9L
+ assert r == 1L
def test_format(self):
assert repr(12345678901234567890) == '12345678901234567890L'
@@ -321,6 +380,10 @@
return 42
assert long(A('abc')) == 42
+ def test_long_errors(self):
+ raises(TypeError, long, 12, 12)
+ raises(ValueError, long, 'xxxxxx?', 12)
+
def test_conjugate(self):
assert (7L).conjugate() == 7L
assert (-7L).conjugate() == -7L
@@ -386,3 +449,4 @@
n = "a" * size
expected = (2 << (size * 4)) // 3
assert long(n, 16) == expected
+
More information about the pypy-commit
mailing list