Issue #5812: Make Fraction('1e6') valid. The Fraction constructor now
accepts all strings accepted by the float and Decimal constructors,
with the exception of strings representing NaNs or infinities.
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
index 91fcd26..448e32d 100644
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -78,6 +78,11 @@
self.assertEquals((-16, 5), _components(F(" -3.2 ")))
self.assertEquals((-3, 1), _components(F(" -3. ")))
self.assertEquals((3, 5), _components(F(" .6 ")))
+ self.assertEquals((1, 3125), _components(F("32.e-5")))
+ self.assertEquals((1000000, 1), _components(F("1E+06")))
+ self.assertEquals((-12300, 1), _components(F("-1.23e4")))
+ self.assertEquals((0, 1), _components(F(" .0e+0\t")))
+ self.assertEquals((0, 1), _components(F("-0.000e0")))
self.assertRaisesMessage(
ZeroDivisionError, "Fraction(3, 0)",
@@ -86,6 +91,9 @@
ValueError, "Invalid literal for Fraction: '3/'",
F, "3/")
self.assertRaisesMessage(
+ ValueError, "Invalid literal for Fraction: '/2'",
+ F, "/2")
+ self.assertRaisesMessage(
ValueError, "Invalid literal for Fraction: '3 /2'",
F, "3 /2")
self.assertRaisesMessage(
@@ -101,10 +109,6 @@
ValueError, "Invalid literal for Fraction: '3a2'",
F, "3a2")
self.assertRaisesMessage(
- # Only parse ordinary decimals, not scientific form.
- ValueError, "Invalid literal for Fraction: '3.2e4'",
- F, "3.2e4")
- self.assertRaisesMessage(
# Don't accept combinations of decimals and rationals.
ValueError, "Invalid literal for Fraction: '3/7.2'",
F, "3/7.2")