(self, cls=F)
| 587 | F.from_decimal, Decimal("snan")) |
| 588 | |
| 589 | def testFromNumber(self, cls=F): |
| 590 | def check(arg, numerator, denominator): |
| 591 | f = cls.from_number(arg) |
| 592 | self.assertIs(type(f), cls) |
| 593 | self.assertEqual(f.numerator, numerator) |
| 594 | self.assertEqual(f.denominator, denominator) |
| 595 | |
| 596 | check(10, 10, 1) |
| 597 | check(2.5, 5, 2) |
| 598 | check(Decimal('2.5'), 5, 2) |
| 599 | check(F(22, 7), 22, 7) |
| 600 | check(DummyFraction(22, 7), 22, 7) |
| 601 | check(Rat(22, 7), 22, 7) |
| 602 | check(Ratio((22, 7)), 22, 7) |
| 603 | self.assertRaises(TypeError, cls.from_number, 3+4j) |
| 604 | self.assertRaises(TypeError, cls.from_number, '5/2') |
| 605 | self.assertRaises(TypeError, cls.from_number, []) |
| 606 | self.assertRaises(OverflowError, cls.from_number, float('inf')) |
| 607 | self.assertRaises(OverflowError, cls.from_number, Decimal('inf')) |
| 608 | |
| 609 | # as_integer_ratio not defined in a class |
| 610 | class A: |
| 611 | pass |
| 612 | a = A() |
| 613 | a.as_integer_ratio = lambda: (9, 5) |
| 614 | check(a, 9, 5) |
| 615 | |
| 616 | def testFromNumber_subclass(self): |
| 617 | self.testFromNumber(DummyFraction) |
no test coverage detected