From 64e7bdb83583baf37bbbcbc91bb00a6816a62f57 Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Wed, 28 Aug 2019 16:04:30 +0900 Subject: [PATCH] test: add test for leading zeroes in fp exp --- tests/test_lex_floating.cpp | 39 ++++++++++++++++++++--------------- tests/test_parse_floating.cpp | 5 +++++ 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/tests/test_lex_floating.cpp b/tests/test_lex_floating.cpp index 79ce157..ed6e79f 100644 --- a/tests/test_lex_floating.cpp +++ b/tests/test_lex_floating.cpp @@ -35,27 +35,29 @@ BOOST_AUTO_TEST_CASE(test_fractional_invalid) BOOST_AUTO_TEST_CASE(test_exponential_valid) { - TOML11_TEST_LEX_ACCEPT(lex_float, "1e10", "1e10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1e+10", "1e+10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1e-10", "1e-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "+1e10", "+1e10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "+1e+10", "+1e+10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "+1e-10", "+1e-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "-1e10", "-1e10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "-1e+10", "-1e+10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "-1e-10", "-1e-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "123e-10", "123e-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1E10", "1E10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1E+10", "1E+10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1E-10", "1E-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "123E-10", "123E-10"); - TOML11_TEST_LEX_ACCEPT(lex_float, "1_2_3E-10", "1_2_3E-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1e10", "1e10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1e+10", "1e+10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1e-10", "1e-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "+1e10", "+1e10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "+1e+10", "+1e+10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "+1e-10", "+1e-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "-1e10", "-1e10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "-1e+10", "-1e+10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "-1e-10", "-1e-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "123e-10", "123e-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1E10", "1E10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1E+10", "1E+10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1E-10", "1E-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "123E-10", "123E-10"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1_2_3E-10", "1_2_3E-10"); TOML11_TEST_LEX_ACCEPT(lex_float, "1_2_3E-1_0", "1_2_3E-1_0"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1_2_3E-01", "1_2_3E-01"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1_2_3E-0_1", "1_2_3E-0_1"); } BOOST_AUTO_TEST_CASE(test_exponential_invalid) { - TOML11_TEST_LEX_ACCEPT(lex_float, "1e1E0", "1e1"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1e1E0", "1e1"); TOML11_TEST_LEX_ACCEPT(lex_float, "1E1e0", "1E1"); } @@ -64,12 +66,15 @@ BOOST_AUTO_TEST_CASE(test_both_valid) TOML11_TEST_LEX_ACCEPT(lex_float, "6.02e23", "6.02e23"); TOML11_TEST_LEX_ACCEPT(lex_float, "6.02e+23", "6.02e+23"); TOML11_TEST_LEX_ACCEPT(lex_float, "1.112_650_06e-17", "1.112_650_06e-17"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1.0e-07", "1.0e-07"); } BOOST_AUTO_TEST_CASE(test_both_invalid) { - TOML11_TEST_LEX_ACCEPT(lex_float, "1e1.0", "1e1"); TOML11_TEST_LEX_REJECT(lex_float, "01e1.0"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1e1.0", "1e1"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1.0e_01", "1.0"); + TOML11_TEST_LEX_ACCEPT(lex_float, "1.0e0__1", "1.0e0"); } BOOST_AUTO_TEST_CASE(test_special_floating_point) diff --git a/tests/test_parse_floating.cpp b/tests/test_parse_floating.cpp index c7dcc16..6d10f75 100644 --- a/tests/test_parse_floating.cpp +++ b/tests/test_parse_floating.cpp @@ -68,6 +68,8 @@ BOOST_AUTO_TEST_CASE(test_exponential) TOML11_TEST_PARSE_EQUAL(parse_floating, "1_2_3E-1_0", 123e-10); TOML11_TEST_PARSE_EQUAL(parse_floating, "+0e0", 0.0); TOML11_TEST_PARSE_EQUAL(parse_floating, "-0e0", -0.0); + TOML11_TEST_PARSE_EQUAL(parse_floating, "1_2_3E-01", 123e-1); + TOML11_TEST_PARSE_EQUAL(parse_floating, "1_2_3E-0_1", 123e-1); } BOOST_AUTO_TEST_CASE(test_exponential_value) @@ -90,6 +92,8 @@ BOOST_AUTO_TEST_CASE(test_exponential_value) TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "1_2_3E-1_0", value(123e-10)); TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "+0e0", value( 0.0)); TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "-0e0", value(-0.0)); + TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "1_2_3E-01", value(123e-1)); + TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "1_2_3E-0_1", value(123e-1)); } BOOST_AUTO_TEST_CASE(test_fe) { @@ -102,6 +106,7 @@ BOOST_AUTO_TEST_CASE(test_fe_vaule) TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "6.02e23", value(6.02e23)); TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "6.02e+23", value(6.02e23)); TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "1.112_650_06e-17", value(1.11265006e-17)); + TOML11_TEST_PARSE_EQUAL_VALUE(parse_value, "3.141_5e-01", value(3.1415e-1)); } BOOST_AUTO_TEST_CASE(test_inf)