summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests/HeadersExchangeTest.cpp
diff options
context:
space:
mode:
authorCharles E. Rolke <chug@apache.org>2013-04-29 20:20:23 +0000
committerCharles E. Rolke <chug@apache.org>2013-04-29 20:20:23 +0000
commit426fad506f4d569626431fe8f61619b12677c3a3 (patch)
tree540ad8d1eeadc172907667b24e664b5b5c32c7cb /qpid/cpp/src/tests/HeadersExchangeTest.cpp
parent170134a81e51549f2e22c0d96303e5ab8be6fec9 (diff)
downloadqpid-python-426fad506f4d569626431fe8f61619b12677c3a3.tar.gz
QPID-4720: C++ Broker headers exchange tests not using run-time comaprisons.
Main code modified only slighty so that tests can hook into actual logic. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1477317 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/HeadersExchangeTest.cpp')
-rw-r--r--qpid/cpp/src/tests/HeadersExchangeTest.cpp130
1 files changed, 102 insertions, 28 deletions
diff --git a/qpid/cpp/src/tests/HeadersExchangeTest.cpp b/qpid/cpp/src/tests/HeadersExchangeTest.cpp
index 40deb59c86..3e68b84bc3 100644
--- a/qpid/cpp/src/tests/HeadersExchangeTest.cpp
+++ b/qpid/cpp/src/tests/HeadersExchangeTest.cpp
@@ -21,12 +21,15 @@
#include "qpid/Exception.h"
#include "qpid/broker/HeadersExchange.h"
+#include "qpid/broker/Message.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/framing/FieldValue.h"
+#include "MessageUtils.h"
#include "unit_test.h"
using namespace qpid::broker;
using namespace qpid::framing;
+using namespace qpid::types;
namespace qpid {
namespace tests {
@@ -35,70 +38,80 @@ QPID_AUTO_TEST_SUITE(HeadersExchangeTestSuite)
QPID_AUTO_TEST_CASE(testMatchAll)
{
- FieldTable b, m, n;
+ FieldTable b;
b.setString("x-match", "all");
b.setString("foo", "FOO");
b.setInt("n", 42);
- m.setString("foo", "FOO");
- m.setInt("n", 42);
- BOOST_CHECK(HeadersExchange::match(b, m));
+
+ Variant::Map m;
+ const int32_t int_n(42);
+ m["foo"] = "FOO";
+ m["n"] = int_n;
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
// Ignore extras.
- m.setString("extra", "x");
- BOOST_CHECK(HeadersExchange::match(b, m));
+ m["extra"] = "x";
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
// Fail mismatch, wrong value.
- m.setString("foo", "NotFoo");
- BOOST_CHECK(!HeadersExchange::match(b, m));
+ m["foo"] = "NotFoo";
+ BOOST_CHECK(!HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
// Fail mismatch, missing value
- n.setInt("n", 42);
- n.setString("extra", "x");
- BOOST_CHECK(!HeadersExchange::match(b, n));
+ Variant::Map n;
+ n["n"] = int_n;
+ n["extra"] = "x";
+ BOOST_CHECK(!HeadersExchange::match(b, MessageUtils::createMessage(n, "", "", true)));
}
QPID_AUTO_TEST_CASE(testMatchAny)
{
- FieldTable b, m, n;
+ FieldTable b;
b.setString("x-match", "any");
b.setString("foo", "FOO");
b.setInt("n", 42);
- m.setString("foo", "FOO");
- BOOST_CHECK(!HeadersExchange::match(b, n));
- BOOST_CHECK(HeadersExchange::match(b, m));
- m.setInt("n", 42);
- BOOST_CHECK(HeadersExchange::match(b, m));
+
+ Variant::Map n;
+ Variant::Map m;
+ m["foo"] = "FOO";
+ BOOST_CHECK(!HeadersExchange::match(b, MessageUtils::createMessage(n, "", "", true)));
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
+ const int32_t int_n(42);
+ m["n"] = int_n;
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
}
QPID_AUTO_TEST_CASE(testMatchEmptyValue)
{
- FieldTable b, m;
+ FieldTable b;
b.setString("x-match", "all");
b.set("foo", FieldTable::ValuePtr());
b.set("n", FieldTable::ValuePtr());
- BOOST_CHECK(!HeadersExchange::match(b, m));
- m.setString("foo", "blah");
- m.setInt("n", 123);
+ Variant::Map m;
+ BOOST_CHECK(!HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
}
QPID_AUTO_TEST_CASE(testMatchEmptyArgs)
{
- FieldTable b, m;
- m.setString("foo", "FOO");
+ FieldTable b;
+ Variant::Map m;
+ m["foo"] = "FOO";
+ Message msg = MessageUtils::createMessage(m, "", "", true);
b.setString("x-match", "all");
- BOOST_CHECK(HeadersExchange::match(b, m));
+ BOOST_CHECK(HeadersExchange::match(b, msg));
b.setString("x-match", "any");
- BOOST_CHECK(!HeadersExchange::match(b, m));
+ BOOST_CHECK(!HeadersExchange::match(b, msg));
}
QPID_AUTO_TEST_CASE(testMatchNoXMatch)
{
- FieldTable b, m;
+ FieldTable b;
b.setString("foo", "FOO");
- m.setString("foo", "FOO");
- BOOST_CHECK(!HeadersExchange::match(b, m));
+ Variant::Map m;
+ m["foo"] = "FOO";
+ BOOST_CHECK(!HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
}
QPID_AUTO_TEST_CASE(testBindNoXMatch)
@@ -115,6 +128,67 @@ QPID_AUTO_TEST_CASE(testBindNoXMatch)
}
}
+
+QPID_AUTO_TEST_CASE(testMatchSizedIntUint)
+{
+ typedef std::list<Variant::Map> vml;
+
+ const int8_t i8(1);
+ const int16_t i16(1);
+ const int32_t i32(1);
+ const int64_t i64(1);
+ const uint8_t u8(1);
+ const uint16_t u16(1);
+ const uint32_t u32(1);
+ const uint64_t u64(1);
+
+ Variant::Map mi8, mi16, mi32, mi64;
+ Variant::Map mu8, mu16, mu32, mu64;
+
+ mi8["bk"] = i8;
+ mi16["bk"] = i16;
+ mi32["bk"] = i32;
+ mi64["bk"] = i64;
+ mu8["bk"] = u8;
+ mu16["bk"] = u16;
+ mu32["bk"] = u32;
+ mu64["bk"] = u64;
+
+ vml mMap;
+ mMap.push_back(mi8);
+ mMap.push_back(mi16);
+ mMap.push_back(mi32);
+ mMap.push_back(mi64);
+ mMap.push_back(mu8);
+ mMap.push_back(mu16);
+ mMap.push_back(mu32);
+ mMap.push_back(mu64);
+
+ for (vml::iterator bVal=mMap.begin(); bVal!=mMap.end(); ++bVal) {
+ FieldTable b;
+ qpid::amqp_0_10::translate(*bVal, b);
+ b.setString("x-match", "all");
+ for (vml::iterator mVal=mMap.begin(); mVal!=mMap.end(); ++mVal) {
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(*mVal, "", "", true)));
+ }
+ }
+}
+
+// TODO: Headers exchange match on single
+
+QPID_AUTO_TEST_CASE(testMatchFloatDouble)
+{
+ const double iFloat(1.0);
+ Variant::Map m;
+ m["bk"] = iFloat;
+
+ FieldTable b;
+ qpid::amqp_0_10::translate(m, b);
+ b.setString("x-match", "all");
+ BOOST_CHECK(HeadersExchange::match(b, MessageUtils::createMessage(m, "", "", true)));
+}
+
+
QPID_AUTO_TEST_SUITE_END()
}} // namespace qpid::tests