Commit 655d583a authored by Raymond Hettinger's avatar Raymond Hettinger

Issue 3287: Raise correct exception for float inputs.

parent 14ff9943
......@@ -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")))
......
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