diff --git a/src/Param_TEST.cc b/src/Param_TEST.cc index a9c2172c0..24f587c20 100644 --- a/src/Param_TEST.cc +++ b/src/Param_TEST.cc @@ -17,6 +17,7 @@ #include #include +#include #include @@ -25,7 +26,7 @@ #include "sdf/Exception.hh" #include "sdf/Param.hh" -bool check_double(std::string num) +bool check_double(const std::string &num) { const std::string name = "number"; const std::string type = "double"; @@ -100,6 +101,42 @@ TEST(SetFromString, Decimals) ASSERT_TRUE(check_double("0.2345")); } +//////////////////////////////////////////////////// +/// Test Inf +TEST(SetFromString, DoublePositiveInf) +{ + ASSERT_TRUE(std::numeric_limits::has_infinity); + std::vector positiveInfStrings{ + "inf", "Inf", "INF", "+inf", "+Inf", "+INF"}; + for (const auto &infString : positiveInfStrings) + { + sdf::Param doubleParam("key", "double", "0", false, "description"); + double value = 0.; + + EXPECT_TRUE(doubleParam.SetFromString(infString)); + doubleParam.Get(value); + EXPECT_DOUBLE_EQ(std::numeric_limits::infinity(), value); + } +} + +//////////////////////////////////////////////////// +/// Test -Inf +TEST(SetFromString, DoubleNegativeInf) +{ + ASSERT_TRUE(std::numeric_limits::is_iec559); + std::vector negativeInfStrings{ + "-inf", "-Inf", "-INF"}; + for (const auto &infString : negativeInfStrings) + { + sdf::Param doubleParam("key", "double", "0", false, "description"); + double value = 0.; + + EXPECT_TRUE(doubleParam.SetFromString(infString)); + doubleParam.Get(value); + EXPECT_DOUBLE_EQ(- std::numeric_limits::infinity(), value); + } +} + //////////////////////////////////////////////////// /// Test setting and reading hex int values. TEST(Param, HexInt)