diff --git a/src/utils.cpp b/src/utils.cpp index d7b9853ee6..e579cb5f5c 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -1163,9 +1163,9 @@ bool utils::is_double(const std::string &str) { if (str.empty()) return false; - if (strmatch(str, "^[-+]?\\d+\\.?\\d*$") || strmatch(str, "^[-+]?\\d*\\.\\d+$") || - strmatch(str, "^[-+]?\\d+\\.?\\d*[eE][-+]?\\d+$") || - strmatch(str, "^[-+]?\\d*\\.\\d+[eE][-+]?\\d+$")) + if (strmatch(str, "^[+-]?\\d+\\.?\\d*$") || strmatch(str, "^[+-]?\\d*\\.?\\d+$") || + strmatch(str, "^[+-]?\\d+\\.?\\d*[eE][+-]?\\d+$") || + strmatch(str, "^[+-]?\\d*\\.?\\d+[eE][+-]?\\d+$")) return true; else return false; diff --git a/unittest/utils/test_utils.cpp b/unittest/utils/test_utils.cpp index e4bb6bf671..972270b7d2 100644 --- a/unittest/utils/test_utils.cpp +++ b/unittest/utils/test_utils.cpp @@ -300,6 +300,26 @@ TEST(Utils, valid_double9) ASSERT_TRUE(utils::is_double("+.0")); } +TEST(Utils, valid_double10) +{ + ASSERT_TRUE(utils::is_double("-0.15")); +} + +TEST(Utils, valid_double11) +{ + ASSERT_TRUE(utils::is_double("-27.5")); +} + +TEST(Utils, valid_double12) +{ + ASSERT_TRUE(utils::is_double("+0.15")); +} + +TEST(Utils, valid_double13) +{ + ASSERT_TRUE(utils::is_double("+27.5")); +} + TEST(Utils, empty_not_an_integer) { ASSERT_FALSE(utils::is_integer("")); @@ -315,26 +335,66 @@ TEST(Utils, text_not_an_integer) ASSERT_FALSE(utils::is_integer("one")); } -TEST(Utils, minus_not_an_integer) +TEST(Utils, minus_not_an_integer1) { ASSERT_FALSE(utils::is_integer("1-")); } -TEST(Utils, plus_not_an_integer) +TEST(Utils, plus_not_an_integer1) { ASSERT_FALSE(utils::is_integer("1+")); } -TEST(Utils, minus_not_a_double) +TEST(Utils, minus_not_an_integer2) +{ + ASSERT_FALSE(utils::is_integer("--1")); +} + +TEST(Utils, plus_not_an_integer2) +{ + ASSERT_FALSE(utils::is_integer("++1")); +} + +TEST(Utils, plusminus_not_an_integer1) +{ + ASSERT_FALSE(utils::is_integer("-+1")); +} + +TEST(Utils, plusminus_not_an_integer2) +{ + ASSERT_FALSE(utils::is_integer("+-1")); +} + +TEST(Utils, minus_not_a_double1) { ASSERT_FALSE(utils::is_double("1-")); } -TEST(Utils, plus_not_a_double) +TEST(Utils, plus_not_a_double1) { ASSERT_FALSE(utils::is_double("1+")); } +TEST(Utils, minus_not_a_double2) +{ + ASSERT_FALSE(utils::is_double("--1")); +} + +TEST(Utils, plus_not_a_double2) +{ + ASSERT_FALSE(utils::is_double("++1")); +} + +TEST(Utils, plusminus_not_a_double1) +{ + ASSERT_FALSE(utils::is_double("+-1")); +} + +TEST(Utils, plusminus_not_a_double2) +{ + ASSERT_FALSE(utils::is_double("-+1")); +} + TEST(Utils, text_not_a_double) { ASSERT_FALSE(utils::is_double("half"));