mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
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.
This commit is contained in:
parent
937491d1a9
commit
cf63f2fb88
4 changed files with 47 additions and 33 deletions
|
@ -78,6 +78,11 @@ class FractionTest(unittest.TestCase):
|
|||
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)",
|
||||
|
@ -85,6 +90,9 @@ class FractionTest(unittest.TestCase):
|
|||
self.assertRaisesMessage(
|
||||
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")
|
||||
|
@ -100,10 +108,6 @@ class FractionTest(unittest.TestCase):
|
|||
# Avoid treating '.' as a regex special character.
|
||||
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'",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue