diff --git a/StringUtils.cpp b/StringUtils.cpp index 9a98c88..a20a6ec 100644 --- a/StringUtils.cpp +++ b/StringUtils.cpp @@ -42,7 +42,7 @@ unsigned int CStringUtils::stringToPort(const std::string& s) unsigned int port = 0U; std::string ls = boost::trim_copy(s); - if(!ls.empty() && std::all_of(ls.begin(), ls.end(), [](char c){ return c > '0' && c < '9'; })) { + if(!ls.empty() && std::all_of(ls.begin(), ls.end(), [](char c){ return c >= '0' && c <= '9'; })) { auto portTemp = boost::lexical_cast(ls); if(portTemp > 0U && portTemp <= 65535U) port = portTemp; diff --git a/Tests/StringUtils/stringToPort.cpp b/Tests/StringUtils/stringToPort.cpp index b4923ea..b3cc740 100644 --- a/Tests/StringUtils/stringToPort.cpp +++ b/Tests/StringUtils/stringToPort.cpp @@ -54,4 +54,33 @@ namespace StringUtilsTests EXPECT_EQ(port, 12345U); } + + TEST_F(StringUtils_stringToPort, StringWithMixedAlphaAndNumbersreturns0) + { + unsigned int port = CStringUtils::stringToPort("123abc456"); + + EXPECT_EQ(port, 0U); + } + + TEST_F(StringUtils_stringToPort, TooLargeValueReturns0) + { + unsigned int port = CStringUtils::stringToPort("999999"); + + EXPECT_EQ(port, 0U); + } + + + TEST_F(StringUtils_stringToPort, TestAllNumDigits) + { + EXPECT_EQ(CStringUtils::stringToPort("10"), 10U); + EXPECT_EQ(CStringUtils::stringToPort("11"), 11U); + EXPECT_EQ(CStringUtils::stringToPort("12"), 12U); + EXPECT_EQ(CStringUtils::stringToPort("13"), 13U); + EXPECT_EQ(CStringUtils::stringToPort("14"), 14U); + EXPECT_EQ(CStringUtils::stringToPort("15"), 15U); + EXPECT_EQ(CStringUtils::stringToPort("16"), 16U); + EXPECT_EQ(CStringUtils::stringToPort("17"), 17U); + EXPECT_EQ(CStringUtils::stringToPort("18"), 18U); + EXPECT_EQ(CStringUtils::stringToPort("19"), 19U); + } } \ No newline at end of file