[Python-checkins] CVS: python/dist/src/Lib/test test_long.py,1.7,1.8
Tim Peters
tim_one@users.sourceforge.net
Thu, 23 Aug 2001 15:56:23 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv20480/python/Lib/test
Modified Files:
test_long.py
Log Message:
SF bug [#454456] int overflow code needs tests.
Added tests for boundary cases in magical PEP 237 int->long auto-overflow,
but nothing here addresses the rest of the bug report so left it open.
Index: test_long.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** test_long.py 2001/08/23 20:34:01 1.7
--- test_long.py 2001/08/23 22:56:21 1.8
***************
*** 256,259 ****
--- 256,319 ----
raise TestFailed, "int(long(-sys.maxint-1) - 1) didn't overflow"
+ # ----------------------------------- tests of auto int->long conversion
+
+ def test_auto_overflow():
+ import math, sys
+
+ if verbose:
+ print "auto-convert int->long on overflow"
+
+ special = [0, 1, 2, 3, sys.maxint-1, sys.maxint, sys.maxint+1]
+ sqrt = int(math.sqrt(sys.maxint))
+ special.extend([sqrt-1, sqrt, sqrt+1])
+ special.extend([-i for i in special])
+
+ def checkit(*args):
+ # Heavy use of nested scopes here!
+ verify(got == expected, "for %r expected %r got %r" %
+ (args, expected, got))
+
+ for x in special:
+ longx = long(x)
+
+ expected = -longx
+ got = -x
+ checkit('-', x)
+
+ for y in special:
+ longy = long(y)
+
+ expected = longx + longy
+ got = x + y
+ checkit(x, '+', y)
+
+ expected = longx - longy
+ got = x - y
+ checkit(x, '-', y)
+
+ expected = longx * longy
+ got = x * y
+ checkit(x, '*', y)
+
+ if y:
+ expected = longx / longy
+ got = x / y
+ checkit(x, '/', y)
+
+ expected = divmod(longx, longy)
+ got = divmod(longx, longy)
+ checkit(x, 'divmod', y)
+
+ if abs(y) < 5 and not (x == 0 and y < 0):
+ expected = longx ** longy
+ got = x ** y
+ checkit(x, '**', y)
+
+ for z in special:
+ if z != 0:
+ expected = pow(longx, longy, long(z))
+ got = pow(x, y, z)
+ checkit('pow', x, y, '%', z)
+
# ---------------------------------------------------------------- do it
***************
*** 262,263 ****
--- 322,324 ----
test_format()
test_misc()
+ test_auto_overflow()