From f45aa5cac1579e87cbc599ffb58e10e662066792 Mon Sep 17 00:00:00 2001 From: Treeston Date: Wed, 2 Sep 2020 22:04:45 +0200 Subject: Common/Util: Trinity::StringTo support (PR #25364) --- tests/common/StringConvert.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'tests/common/StringConvert.cpp') diff --git a/tests/common/StringConvert.cpp b/tests/common/StringConvert.cpp index d25e28f3d19..c1a6f5da7f8 100644 --- a/tests/common/StringConvert.cpp +++ b/tests/common/StringConvert.cpp @@ -119,7 +119,7 @@ TEST_CASE("String to smaller integer types", "[StringConvert]") REQUIRE(Trinity::StringTo("-1", 0) == -1); } -TEST_CASE("Test.String to boolean", "[StringConvert]") +TEST_CASE("String to boolean", "[StringConvert]") { REQUIRE(Trinity::StringTo("true") == true); REQUIRE(Trinity::StringTo("false") == false); @@ -129,3 +129,26 @@ TEST_CASE("Test.String to boolean", "[StringConvert]") REQUIRE(Trinity::StringTo("1", 10) == true); REQUIRE(Trinity::StringTo("0", 10) == false); } + +TEST_CASE("String to double", "[StringConvert]") +{ + using namespace Catch::literals; + REQUIRE(Trinity::StringTo("0.5") == 0.5); + REQUIRE(Trinity::StringTo("0.1") == 0.1_a); + REQUIRE(Trinity::StringTo("1.2.3") == std::nullopt); + REQUIRE(Trinity::StringTo("1e+5") == 100000.0); + REQUIRE(Trinity::StringTo("1e+3+5") == std::nullopt); + REQUIRE(Trinity::StringTo("a1.5") == std::nullopt); + REQUIRE(Trinity::StringTo("1.5tail") == std::nullopt); + REQUIRE(Trinity::StringTo("0x0") == 0.0); + REQUIRE(Trinity::StringTo("0x0", 16) == std::nullopt); + REQUIRE(Trinity::StringTo("0", 16) == 0.0); + REQUIRE(Trinity::StringTo("0x1.BC70A3D70A3D7p+6") == 0x1.BC70A3D70A3D7p+6); + REQUIRE(Trinity::StringTo("0x1.BC70A3D70A3D7p+6", 10) == std::nullopt); + REQUIRE(Trinity::StringTo("0x1.BC70A3D70A3D7p+6", 16) == std::nullopt); + REQUIRE(Trinity::StringTo("1.BC70A3D70A3D7p+6", 16) == 0x1.BC70A3D70A3D7p+6); + REQUIRE(Trinity::StringTo("0x1.2.3") == std::nullopt); + REQUIRE(Trinity::StringTo("0x1.AAAp+1-3") == std::nullopt); + REQUIRE(Trinity::StringTo("1.2.3", 16) == std::nullopt); + REQUIRE(Trinity::StringTo("1.AAAp+1-3", 16) == std::nullopt); +} -- cgit v1.2.3