diff options
Diffstat (limited to 'cpp/src/tests/Url.cpp')
-rw-r--r-- | cpp/src/tests/Url.cpp | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/cpp/src/tests/Url.cpp b/cpp/src/tests/Url.cpp index d2892d92bf..343186eb1f 100644 --- a/cpp/src/tests/Url.cpp +++ b/cpp/src/tests/Url.cpp @@ -26,39 +26,47 @@ using namespace std; using namespace qpid; using namespace boost::assign; -QPID_AUTO_TEST_SUITE(UrlTestSuite) +namespace qpid { +namespace tests { -QPID_AUTO_TEST_CASE(testUrl_str) { - Url url; - url.push_back(TcpAddress("foo.com")); - url.push_back(TcpAddress("bar.com", 6789)); - BOOST_CHECK_EQUAL("amqp:tcp:foo.com:5672,tcp:bar.com:6789", url.str()); - BOOST_CHECK(Url().str().empty()); -} +QPID_AUTO_TEST_SUITE(UrlTestSuite) +#define URL_CHECK_STR(STR) BOOST_CHECK_EQUAL(Url(STR).str(), STR) +#define URL_CHECK_INVALID(STR) BOOST_CHECK_THROW(Url(STR), Url::Invalid) -QPID_AUTO_TEST_CASE(testUrl_parse) { - Url url; - url.parse("amqp:foo.com,tcp:bar.com:1234"); - BOOST_CHECK_EQUAL(2u, url.size()); - BOOST_CHECK_EQUAL("foo.com", boost::get<TcpAddress>(url[0]).host); - BOOST_CHECK_EQUAL("amqp:tcp:foo.com:5672,tcp:bar.com:1234", url.str()); +QPID_AUTO_TEST_CASE(TestParseTcp) { + URL_CHECK_STR("amqp:tcp:host:42"); + URL_CHECK_STR("amqp:tcp:host-._~%ff%23:42"); // unreserved chars and pct encoded hex. - url.parse("amqp:foo/ignorethis"); - BOOST_CHECK_EQUAL("amqp:tcp:foo:5672", url.str()); + // Check defaults + BOOST_CHECK_EQUAL(Url("amqp:host:42").str(), "amqp:tcp:host:42"); + BOOST_CHECK_EQUAL(Url("amqp:tcp:host").str(), "amqp:tcp:host:5672"); + BOOST_CHECK_EQUAL(Url("amqp:tcp:").str(), "amqp:tcp:127.0.0.1:5672"); + BOOST_CHECK_EQUAL(Url("amqp:").str(), "amqp:tcp:127.0.0.1:5672"); + BOOST_CHECK_EQUAL(Url("amqp::42").str(), "amqp:tcp:127.0.0.1:42"); - url.parse("amqp:"); - BOOST_CHECK_EQUAL("amqp:tcp::5672", url.str()); + URL_CHECK_INVALID("amqp::badHost!#$#"); + URL_CHECK_INVALID("amqp::host:badPort"); +} - try { - url.parse("invalid url"); - BOOST_FAIL("Expected InvalidUrl exception"); - } - catch (const Url::InvalidUrl&) {} +QPID_AUTO_TEST_CASE(TestParseExample) { + URL_CHECK_STR("amqp:example:x"); + URL_CHECK_INVALID("amqp:example:badExample"); +} - url.parseNoThrow("invalid url"); - BOOST_CHECK(url.empty()); +QPID_AUTO_TEST_CASE(TestParseMultiAddress) { + URL_CHECK_STR("amqp:tcp:host:0,example:y,tcp:foo:0,example:1"); + URL_CHECK_STR("amqp:example:z,tcp:foo:0"); + URL_CHECK_INVALID("amqp:tcp:h:0,"); + URL_CHECK_INVALID(",amqp:tcp:h"); } +QPID_AUTO_TEST_CASE(TestInvalidAddress) { + URL_CHECK_INVALID("xxxx"); + URL_CHECK_INVALID(""); +} + QPID_AUTO_TEST_SUITE_END() + +}} // namespace qpid::tests |