[pypy-svn] r14253 - pypy/dist/pypy/objspace/std/test
tismer at codespeak.net
tismer at codespeak.net
Mon Jul 4 21:35:41 CEST 2005
Author: tismer
Date: Mon Jul 4 21:35:40 2005
New Revision: 14253
Modified:
pypy/dist/pypy/objspace/std/test/test_longobject.py
Log:
long true divide and longfloor divide are ready,
also conversions to float.
missing:
repr, str, long from float, and, or, xor, hex, oct, hash, pow :-( heelp
Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/test/test_longobject.py (original)
+++ pypy/dist/pypy/objspace/std/test/test_longobject.py Mon Jul 4 21:35:40 2005
@@ -68,6 +68,50 @@
div, rem = lobj._divrem1(self.space, f1, f2)
assert (div.longval(), rem) == divmod(x, y)
+ def test__muladd1(self):
+ x = 1238585838347L
+ y = 3
+ z = 42
+ f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x))
+ f2 = r_uint(y)
+ f3 = r_uint(z)
+ prod = lobj._muladd1(self.space, f1, f2, f3)
+ assert prod.longval() == x * y + z
+
+ def test__x_divrem(self):
+ x = 12345678901234567890L
+ for i in range(100):
+ y = long(randint(0, 1 << 30))
+ y <<= 30
+ y += randint(0, 1 << 30)
+ f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x))
+ f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y))
+ div, rem = lobj._x_divrem(self.space, f1, f2)
+ assert div.longval(), rem.longval() == divmod(x, y)
+
+ def test__divrem(self):
+ x = 12345678901234567890L
+ for i in range(100):
+ y = long(randint(0, 1 << 30))
+ y <<= 30
+ y += randint(0, 1 << 30)
+ for sx, sy in (1, 1), (1, -1), (-1, -1), (-1, 1):
+ sx *= x
+ sy *= y
+ f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(sx))
+ f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(sy))
+ div, rem = lobj._x_divrem(self.space, f1, f2)
+ assert div.longval(), rem.longval() == divmod(sx, sy)
+
+ def test__AsDouble(self):
+ x = 12345678901234567890L ** 10
+ f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x))
+ d = lobj._AsDouble(f1)
+ assert d == float(x)
+ x = x ** 100
+ f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x))
+ assert raises(OverflowError, lobj._AsDouble, f1)
+
def test_eq(self):
x = 5858393919192332223L
y = 585839391919233111223311112332L
@@ -220,10 +264,18 @@
def test_sub(self):
assert int(58543L - 12332L) == 58543 - 12332
assert 237123838281233L * 12 == 237123838281233L * 12L
-
+
def test_mul(self):
assert 363L * 2 ** 40 == 363L << 40
+ def test_truediv(self):
+ exec "from __future__ import division; a = 31415926L / 10000000L"
+ assert a == 3.1415926
+
+ def test_floordiv(self):
+ a = 31415926L // 10000000L
+ assert a == 3L
+
def test_conversion(self):
class long2(long):
pass
More information about the Pypy-commit
mailing list