summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-04-12 17:25:35 +0000
committerGordon Sim <gsim@apache.org>2010-04-12 17:25:35 +0000
commit9d2af98f3234ef0f635d01cbb1540e0d2b00264d (patch)
treecaaa92b8fd3eb59ae37f10a34c7ad581c6295841 /cpp/src
parentfb7376620cd4a090f544dece75ec467ba5191fd5 (diff)
downloadqpid-python-9d2af98f3234ef0f635d01cbb1540e0d2b00264d.tar.gz
QPID-664: changed option verifier to use constants rather than duplicating string literals; added a test to make sure all valid options are allowed and illegal ones are not
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@933330 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/client/amqp0_10/AddressResolution.cpp35
-rw-r--r--cpp/src/tests/MessagingSessionTests.cpp7
2 files changed, 25 insertions, 17 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
index 8289242f09..146d34932a 100644
--- a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
+++ b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
@@ -72,7 +72,6 @@ class Verifier
};
namespace{
-const Verifier verifier;
const Variant EMPTY_VARIANT;
const FieldTable EMPTY_FIELD_TABLE;
const Variant::List EMPTY_LIST;
@@ -129,6 +128,8 @@ const std::string DIRECT_EXCHANGE("direct");
const std::string HEADERS_EXCHANGE("headers");
const std::string XML_EXCHANGE("xml");
const std::string WILDCARD_ANY("*");
+
+const Verifier verifier;
}
struct Binding
@@ -922,24 +923,24 @@ std::vector<std::string> Node::SENDER_MODES = list_of<std::string>(ALWAYS) (SEND
Verifier::Verifier()
{
- defined["create"] = true;
- defined["assert"] = true;
- defined["delete"] = true;
- defined["mode"] = true;
+ defined[CREATE] = true;
+ defined[ASSERT] = true;
+ defined[DELETE] = true;
+ defined[MODE] = true;
Variant::Map node;
- node["type"] = true;
- node["durable"] = true;
- node["x-declare"] = true;
- node["x-bindings"] = true;
- defined["node"] = node;
+ node[TYPE] = true;
+ node[DURABLE] = true;
+ node[X_DECLARE] = true;
+ node[X_BINDINGS] = true;
+ defined[NODE] = node;
Variant::Map link;
- link["name"] = true;
- link["durable"] = true;
- link["reliable"] = true;
- link["x-subscribe"] = true;
- link["x-declare"] = true;
- link["x-bindings"] = true;
- defined["link"] = link;
+ link[NAME] = true;
+ link[DURABLE] = true;
+ link[RELIABILITY] = true;
+ link[X_SUBSCRIBE] = true;
+ link[X_DECLARE] = true;
+ link[X_BINDINGS] = true;
+ defined[LINK] = link;
}
void Verifier::verify(const Address& address) const
{
diff --git a/cpp/src/tests/MessagingSessionTests.cpp b/cpp/src/tests/MessagingSessionTests.cpp
index d134793b82..e1b2a35213 100644
--- a/cpp/src/tests/MessagingSessionTests.cpp
+++ b/cpp/src/tests/MessagingSessionTests.cpp
@@ -872,6 +872,13 @@ QPID_AUTO_TEST_CASE(testRelease)
fix.session.acknowledge(true);
}
+QPID_AUTO_TEST_CASE(testOptionVerification)
+{
+ MessagingFixture fix;
+ fix.session.createReceiver("my-queue; {create: always, assert: always, delete: always, node: {type: queue, durable: false, x-declare: {arguments: {a: b}}, x-bindings: [{exchange: amq.fanout}]}, link: {name: abc, durable: false, reliability: exactly-once, x-subscribe: {arguments:{a:b}}, x-bindings:[{exchange: amq.fanout}]}, mode: browse}");
+ BOOST_CHECK_THROW(fix.session.createReceiver("my-queue; {invalid-option:blah}"), qpid::messaging::AddressError);
+}
+
QPID_AUTO_TEST_SUITE_END()
}} // namespace qpid::tests