Skip to content

Instantly share code, notes, and snippets.

@vinniefalco
Created January 23, 2020 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vinniefalco/f59c7a7d20121c786091f21ca8add2c0 to your computer and use it in GitHub Desktop.
Save vinniefalco/f59c7a7d20121c786091f21ca8add2c0 to your computer and use it in GitHub Desktop.
void
testPath()
{
// path-empty
BOOST_TEST(value("").set_encoded_path("").encoded_url() == "");
BOOST_TEST(value("//x#").set_encoded_path("").encoded_url() == "//x#");
// path-abempty
BOOST_TEST(value("//x#").set_encoded_path("/").encoded_url() == "//x/#");
BOOST_TEST(value("//x#").set_encoded_path("//").encoded_url() == "//x//#");
BOOST_TEST(value("//x#").set_encoded_path("/y").encoded_url() == "//x/y#");
BOOST_TEST_THROWS(value("//x#").set_encoded_path("x"), invalid_part);
BOOST_TEST_THROWS(value("//x#").set_encoded_path("x/"), invalid_part);
BOOST_TEST_THROWS(value("//x#").set_encoded_path("/%A"), invalid_part);
BOOST_TEST_THROWS(value("//x#").set_encoded_path("/#"), invalid_part);
// path-absolute
BOOST_TEST(value("?#").set_encoded_path("/x").encoded_url() == "/x?#");
BOOST_TEST_THROWS(value("?").set_encoded_path("//x"), invalid_part);
BOOST_TEST_THROWS(value("?").set_encoded_path("/x%A"), invalid_part);
// path-noscheme
BOOST_TEST(value("").set_encoded_path("x").encoded_url() == "x");
BOOST_TEST(value("").set_encoded_path("x/").encoded_url() == "x/");
BOOST_TEST(value("").set_encoded_path("x//").encoded_url() == "x//");
BOOST_TEST(value("?#").set_encoded_path("x").encoded_url() == "x?#");
BOOST_TEST(value("?#").set_encoded_path("x/").encoded_url() == "x/?#");
BOOST_TEST(value("?#").set_encoded_path("x//").encoded_url() == "x//?#");
BOOST_TEST(value("yz/?#").set_encoded_path("x").encoded_url() == "x?#");
BOOST_TEST(value("yz/?#").set_encoded_path("x/").encoded_url() == "x/?#");
BOOST_TEST(value("yz/?#").set_encoded_path("x//").encoded_url() == "x//?#");
BOOST_TEST_THROWS(value("yz/?#").set_encoded_path(":"), invalid_part);
BOOST_TEST_THROWS(value("yz/?#").set_encoded_path("x:"), invalid_part);
BOOST_TEST_THROWS(value("yz/?#").set_encoded_path("x:/q"), invalid_part);
// path-rootless
BOOST_TEST(value("x:?#").set_encoded_path("y").encoded_url() == "x:y?#");
BOOST_TEST(value("x:?#").set_encoded_path("y/").encoded_url() == "x:y/?#");
BOOST_TEST(value("x:?#").set_encoded_path("y//").encoded_url() == "x:y//?#");
BOOST_TEST_THROWS(value("x:?#").set_encoded_path("/"), invalid_part);
BOOST_TEST_THROWS(value("x:?#").set_encoded_path("%A"), invalid_part);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment