|
5 | 5 | from test import support
|
6 | 6 | import unittest
|
7 | 7 | import itertools
|
| 8 | +import decimal |
8 | 9 | import math
|
9 | 10 | import os
|
10 | 11 | import platform
|
@@ -497,26 +498,33 @@ def testFabs(self):
|
497 | 498 |
|
498 | 499 | def testFactorial(self):
|
499 | 500 | self.assertEqual(math.factorial(0), 1)
|
500 |
| - self.assertEqual(math.factorial(0.0), 1) |
501 |
| - total = 1 |
502 |
| - for i in range(1, 1000): |
503 |
| - total *= i |
504 |
| - self.assertEqual(math.factorial(i), total) |
505 |
| - self.assertEqual(math.factorial(float(i)), total) |
506 |
| - self.assertEqual(math.factorial(i), py_factorial(i)) |
| 501 | + with self.assertWarns(DeprecationWarning): |
| 502 | + self.assertEqual(math.factorial(0.0), 1) |
| 503 | + total = 1 |
| 504 | + for i in range(1, 1000): |
| 505 | + total *= i |
| 506 | + self.assertEqual(math.factorial(i), total) |
| 507 | + self.assertEqual(math.factorial(float(i)), total) |
| 508 | + self.assertEqual(math.factorial(i), py_factorial(i)) |
507 | 509 | self.assertRaises(ValueError, math.factorial, -1)
|
508 |
| - self.assertRaises(ValueError, math.factorial, -1.0) |
509 |
| - self.assertRaises(ValueError, math.factorial, -10**100) |
510 |
| - self.assertRaises(ValueError, math.factorial, -1e100) |
511 |
| - self.assertRaises(ValueError, math.factorial, math.pi) |
| 510 | + with self.assertWarns(DeprecationWarning): |
| 511 | + self.assertRaises(ValueError, math.factorial, -1.0) |
| 512 | + self.assertRaises(ValueError, math.factorial, -10**100) |
| 513 | + self.assertRaises(ValueError, math.factorial, -1e100) |
| 514 | + self.assertRaises(ValueError, math.factorial, math.pi) |
| 515 | + |
| 516 | + def testFactorialNonIntegers(self): |
| 517 | + self.assertRaises(TypeError, math.factorial, decimal.Decimal(5.2)) |
| 518 | + self.assertRaises(TypeError, math.factorial, "5") |
512 | 519 |
|
513 | 520 | # Other implementations may place different upper bounds.
|
514 | 521 | @support.cpython_only
|
515 | 522 | def testFactorialHugeInputs(self):
|
516 | 523 | # Currently raises ValueError for inputs that are too large
|
517 | 524 | # to fit into a C long.
|
518 | 525 | self.assertRaises(OverflowError, math.factorial, 10**100)
|
519 |
| - self.assertRaises(OverflowError, math.factorial, 1e100) |
| 526 | + with self.assertWarns(DeprecationWarning): |
| 527 | + self.assertRaises(OverflowError, math.factorial, 1e100) |
520 | 528 |
|
521 | 529 | def testFloor(self):
|
522 | 530 | self.assertRaises(TypeError, math.floor)
|
|
0 commit comments