Issue 3287: Raise correct exception for float inputs.
This commit is contained in:
parent
14ff99432d
commit
655d583a49
|
@ -96,9 +96,11 @@ class Fraction(Rational):
|
|||
|
||||
if denominator == 0:
|
||||
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
|
||||
|
||||
numerator = numerator.__index__()
|
||||
denominator = denominator.__index__()
|
||||
try:
|
||||
numerator = numerator.__index__()
|
||||
denominator = denominator.__index__()
|
||||
except AttributeError:
|
||||
raise TypeError('Numerator and denominator must support __index__.')
|
||||
g = gcd(numerator, denominator)
|
||||
self._numerator = numerator // g
|
||||
self._denominator = denominator // g
|
||||
|
|
|
@ -62,11 +62,11 @@ class FractionTest(unittest.TestCase):
|
|||
|
||||
self.assertRaisesMessage(ZeroDivisionError, "Fraction(12, 0)",
|
||||
F, 12, 0)
|
||||
self.assertRaises(AttributeError, F, 1.5)
|
||||
self.assertRaises(AttributeError, F, 1.5 + 3j)
|
||||
self.assertRaises(TypeError, F, 1.5)
|
||||
self.assertRaises(TypeError, F, 1.5 + 3j)
|
||||
|
||||
self.assertRaises(AttributeError, F, F(1, 2), 3)
|
||||
self.assertRaises(AttributeError, F, "3/2", 3)
|
||||
self.assertRaises(TypeError, F, F(1, 2), 3)
|
||||
self.assertRaises(TypeError, F, "3/2", 3)
|
||||
|
||||
def testFromString(self):
|
||||
self.assertEquals((5, 1), _components(F("5")))
|
||||
|
|
Loading…
Reference in New Issue