2
0
mirror of https://github.com/boostorg/url.git synced 2026-02-15 01:22:11 +00:00
This commit is contained in:
Vinnie Falco
2021-09-13 19:28:59 -07:00
parent 8188681187
commit bffa0e9c2e
17 changed files with 254 additions and 155 deletions

View File

@@ -526,41 +526,48 @@ public:
void
testScheme()
{
auto const remove = [](
string_view s1, string_view s2)
{
url u;
u.reserve(40);
url u = parse_uri_reference(s1);
BOOST_TEST(
u.set_scheme("http").str() == "http:");
}
u.remove_scheme().str() == s2);
BOOST_TEST(u.scheme().empty());
BOOST_TEST(u.scheme_id() ==
scheme::none);
};
url u;
BOOST_TEST(u.set_scheme("").str() == "");
BOOST_TEST(u.set_scheme(scheme::none).str() == "");
BOOST_TEST(u.set_scheme("http").str() == "http:");
BOOST_TEST(u.scheme_id() == scheme::http);
BOOST_TEST_THROWS(
u.set_scheme("http:"), std::invalid_argument);
BOOST_TEST(u.str() == "http:");
BOOST_TEST(u.scheme_id() == scheme::http);
BOOST_TEST_THROWS(
u.set_scheme("1http"), std::invalid_argument);
BOOST_TEST_THROWS(
u.set_scheme(scheme::unknown), std::invalid_argument);
BOOST_TEST(u.scheme_id() == scheme::http);
BOOST_TEST(u.str() == "http:");
BOOST_TEST(u.scheme_id() == scheme::http);
BOOST_TEST(u.set_scheme("ftp").str() == "ftp:");
BOOST_TEST(u.scheme_id() == scheme::ftp);
BOOST_TEST(u.set_scheme(scheme::none).str() == "");
BOOST_TEST(u.scheme_id() == scheme::none);
BOOST_TEST(u.set_scheme(scheme::ws).str() == "ws:");
BOOST_TEST(u.scheme_id() == scheme::ws);
BOOST_TEST(u.set_scheme("").str() == "");
BOOST_TEST(u.scheme_id() == scheme::none);
BOOST_TEST(u.set_scheme("x").str() == "x:");
BOOST_TEST(u.scheme_id() == scheme::unknown);
u = parse_uri("http:/path/to/file.txt");
BOOST_TEST(u.set_scheme("").str() == "/path/to/file.txt");
auto const set = [](
string_view s1, string_view s2,
string_view s3, scheme id)
{
url u = parse_uri_reference(s1);
BOOST_TEST(
u.set_scheme(s2).str() == s3);
BOOST_TEST(u.scheme() == s2);
BOOST_TEST(u.scheme_id() == id);
};
remove("", "");
remove("x", "x");
remove("x:", "");
remove("x:/", "/");
remove("x:a", "a");
remove("x:a/", "a/");
remove("x://", "//");
remove("x:a:/", "./a:/");
remove("x://a.b/1/2", "//a.b/1/2");
remove("x://a:b@c.d/1/?#", "//a:b@c.d/1/?#");
set("", "ftp", "ftp:", scheme::ftp);
set("/", "ws", "ws:/", scheme::ws);
set("a", "ws", "ws:a", scheme::ws);
set("a/", "ws", "ws:a/", scheme::ws);
set("//", "ws", "ws://", scheme::ws);
set("a:/", "ws", "ws:/", scheme::ws);
set("//a.b/1/2", "ws","ws://a.b/1/2", scheme::ws);
set("//a:b@c.d/1/?#", "ws",
"ws://a:b@c.d/1/?#", scheme::ws);
}
//--------------------------------------------