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