Commit 1b8a46d5 authored by Serhiy Storchaka's avatar Serhiy Storchaka Committed by GitHub

bpo-35431: Test math.comb() and math.perm() for OverflowError only on CPython. (GH-14146)

Other implementation can raise MemoryError, but it can takes hours.
parent 231aad38
...@@ -525,7 +525,7 @@ class MathTests(unittest.TestCase): ...@@ -525,7 +525,7 @@ class MathTests(unittest.TestCase):
# Other implementations may place different upper bounds. # Other implementations may place different upper bounds.
@support.cpython_only @support.cpython_only
def testFactorialHugeInputs(self): def testFactorialHugeInputs(self):
# Currently raises ValueError for inputs that are too large # Currently raises OverflowError for inputs that are too large
# to fit into a C long. # to fit into a C long.
self.assertRaises(OverflowError, math.factorial, 10**100) self.assertRaises(OverflowError, math.factorial, 10**100)
with self.assertWarns(DeprecationWarning): with self.assertWarns(DeprecationWarning):
...@@ -1922,7 +1922,8 @@ class IsCloseTests(unittest.TestCase): ...@@ -1922,7 +1922,8 @@ class IsCloseTests(unittest.TestCase):
self.assertEqual(perm(n, 0), 1) self.assertEqual(perm(n, 0), 1)
self.assertEqual(perm(n, 1), n) self.assertEqual(perm(n, 1), n)
self.assertEqual(perm(n, 2), n * (n-1)) self.assertEqual(perm(n, 2), n * (n-1))
self.assertRaises((OverflowError, MemoryError), perm, n, n) if support.check_impl_detail(cpython=True):
self.assertRaises(OverflowError, perm, n, n)
for n, k in (True, True), (True, False), (False, False): for n, k in (True, True), (True, False), (False, False):
self.assertEqual(perm(n, k), 1) self.assertEqual(perm(n, k), 1)
...@@ -1991,7 +1992,8 @@ class IsCloseTests(unittest.TestCase): ...@@ -1991,7 +1992,8 @@ class IsCloseTests(unittest.TestCase):
self.assertEqual(comb(n, n), 1) self.assertEqual(comb(n, n), 1)
self.assertEqual(comb(n, n-1), n) self.assertEqual(comb(n, n-1), n)
self.assertEqual(comb(n, n-2), n * (n-1) // 2) self.assertEqual(comb(n, n-2), n * (n-1) // 2)
self.assertRaises((OverflowError, MemoryError), comb, n, n//2) if support.check_impl_detail(cpython=True):
self.assertRaises(OverflowError, comb, n, n//2)
for n, k in (True, True), (True, False), (False, False): for n, k in (True, True), (True, False), (False, False):
self.assertEqual(comb(n, k), 1) self.assertEqual(comb(n, k), 1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment