Merge pull request #4188 from Parashurama/improve_float_parsing

fixes some issues with underscores in float literals. add more tests.
This commit is contained in:
Andreas Rumpf 2016-05-20 00:56:51 +02:00
commit 366a0df490
3 changed files with 54 additions and 5 deletions

21
tests/float/tfloat6.nim Normal file
View file

@ -0,0 +1,21 @@
discard """
file: "tfloat6.nim"
output: '''1e-06 : 1e-06
1e-06 : 1e-06
0.001 : 0.001
1e-06 : 1e-06
1e-06 : 1e-06
10.000001 : 10.000001
100.000001 : 100.000001'''
"""
import strutils
echo "0.00_0001".parseFloat(), " : ", 1E-6
echo "0.00__00_01".parseFloat(), " : ", 1E-6
echo "0.0_01".parseFloat(), " : ", 0.001
echo "0.00_000_1".parseFloat(), " : ", 1E-6
echo "0.00000_1".parseFloat(), " : ", 1E-6
echo "1_0.00_0001".parseFloat(), " : ", 10.000001
echo "1__00.00_0001".parseFloat(), " : ", 1_00.000001

26
tests/float/tfloat7.nim Normal file
View file

@ -0,0 +1,26 @@
discard """
file: "tfloat6.nim"
output: '''passed.
passed.
passed.
passed.
passed.
passed.
passed.'''
"""
import strutils
template expect_fail(x: expr) =
try:
discard x
echo("expected to fail!")
except ValueError:
echo("passed.")
expect_fail("1_0._00_0001".parseFloat())
expect_fail("_1_0_00.0001".parseFloat())
expect_fail("10.00.01".parseFloat())
expect_fail("10.00E_01".parseFloat())
expect_fail("10.00E_01".parseFloat())
expect_fail("10.00E".parseFloat())
expect_fail("10.00A".parseFloat())