From d7ab0ad10315ea5fcca15e88993c523c23be53ea Mon Sep 17 00:00:00 2001 From: Jonathan Robie Date: Fri, 29 Oct 2010 17:26:05 +0000 Subject: Corrects AddressParser to use typed simple values. Adds Variant::fromString(). Resolves QPID-2896 and QPID-2908. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1028860 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/tests/Address.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'qpid/cpp/src/tests/Address.cpp') diff --git a/qpid/cpp/src/tests/Address.cpp b/qpid/cpp/src/tests/Address.cpp index 6339e3a435..f41f27b6df 100644 --- a/qpid/cpp/src/tests/Address.cpp +++ b/qpid/cpp/src/tests/Address.cpp @@ -49,8 +49,15 @@ QPID_AUTO_TEST_CASE(testParseOptions) { Address address("my-topic; {a:bc, x:101, y:'a string'}"); BOOST_CHECK_EQUAL(std::string("my-topic"), address.getName()); + + BOOST_CHECK_EQUAL(std::string("bc"), address.getOptions()["a"]); + BOOST_CHECK_EQUAL(101, static_cast(address.getOptions()["x"])); + BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"]); + + // Test asString() and asInt64() once here + BOOST_CHECK_EQUAL(std::string("bc"), address.getOptions()["a"].asString()); - BOOST_CHECK_EQUAL((uint16_t) 101, address.getOptions()["x"].asInt64()); + BOOST_CHECK_EQUAL(static_cast(101), address.getOptions()["x"].asInt64()); BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"].asString()); } @@ -59,19 +66,19 @@ QPID_AUTO_TEST_CASE(testParseSubjectAndOptions) Address address("my-topic/my-subject; {a:bc, x:101, y:'a string'}"); BOOST_CHECK_EQUAL(std::string("my-topic"), address.getName()); BOOST_CHECK_EQUAL(std::string("my-subject"), address.getSubject()); - BOOST_CHECK_EQUAL(std::string("bc"), address.getOptions()["a"].asString()); - BOOST_CHECK_EQUAL((uint16_t) 101, address.getOptions()["x"].asInt64()); - BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"].asString()); + + BOOST_CHECK_EQUAL(std::string("bc"), address.getOptions()["a"]); + BOOST_CHECK_EQUAL(101, static_cast(address.getOptions()["x"])); + BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"]); } QPID_AUTO_TEST_CASE(testParseNestedOptions) { Address address("my-topic; {a:{p:202, q:'another string'}, x:101, y:'a string'}"); BOOST_CHECK_EQUAL(std::string("my-topic"), address.getName()); - BOOST_CHECK_EQUAL((uint16_t) 202, address.getOptions()["a"].asMap()["p"].asInt64()); - BOOST_CHECK_EQUAL(std::string("another string"), address.getOptions()["a"].asMap()["q"].asString()); - BOOST_CHECK_EQUAL((uint16_t) 101, address.getOptions()["x"].asInt64()); - BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"].asString()); + BOOST_CHECK_EQUAL(202, static_cast(address.getOptions()["a"].asMap()["p"])); + BOOST_CHECK_EQUAL(std::string("another string"), address.getOptions()["a"].asMap()["q"]); + BOOST_CHECK_EQUAL(std::string("a string"), address.getOptions()["y"]); } QPID_AUTO_TEST_CASE(testParseOptionsWithList) -- cgit v1.2.1