Open AniSkyWorker opened 6 years ago
catch (const std::invalid_argument& isError)
{
std::cout << isError.what() << "\n";
return false;
}
catch (const std::out_of_range& isError)
{
std::cout << isError.what() << "\n";
return false;
}
Protocol CheckProtocol(const std::string& protocolString)
{
auto ConvertCharTolower = [](char ch) {
return static_cast<char>(tolower(ch));
};
std::string protocolStringInLowerCase;
std::transform(protocolString.begin(), protocolString.end(), std::back_inserter(protocolStringInLowerCase), ConvertCharTolower);
if (protocolStringInLowerCase == "http")
{
return Protocol::HTTP;
}
else if (protocolStringInLowerCase == "https")
{
return Protocol::HTTPS;
}
else if (protocolStringInLowerCase == "ftp")
{
return Protocol::FTP;
}
return Protocol::NotValid;
}
bool CheckPortNumber(const std::string& portString, int& portNumber)
{
try
{
portNumber = std::stoi(portString);
if ((portNumber < 1) || (portNumber > 65535))
{
return false;
}
}
catch (const std::exception&)
{
return false;
}
return true;
}
// берет неверный url и возвращает false
BOOST_AUTO_TEST_CASE(takes_invalid_url_and_returns_false)
{
CheckUrlParsing("http:/www.mysite.com/docs", 0, "", "", false);
CheckUrlParsing("https//www.mysite.com/docs", 0, "", "", false);
CheckUrlParsing("ftpwww.mysite.com/docs", 0, "", "", false);
}
[ ] Из имени теста не ясен критерий, по которому урл считается невалидным. Разбить на несколько тестов с понятными именами.
[ ] Для проверки невалидных урлов сделать отдельную функцию, ожидающую, что парсинг URL-а завалится.
ExpectUrlParsingFailure("InvalidProtocol://google.com");
ParseUrl
, и проверок.k = 0.8