fix incorrect detection of leading '-' on floating point numbers
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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"));
|
||||
|
||||
Reference in New Issue
Block a user