summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-11-09 10:40:56 +0000
committerGordon Sim <gsim@apache.org>2006-11-09 10:40:56 +0000
commit72a71413f25916caea6345b956d859d16eb0d3e3 (patch)
treeeb6b07b802f64f9cd8f815270f7596e01cfd9244 /cpp/test
parent3183bdd1eeec30d40229bc7394e49cb2bccb9526 (diff)
downloadqpid-python-72a71413f25916caea6345b956d859d16eb0d3e3.tar.gz
Added some encode/decode routines to Message (plus test).
Altered Buffer to allow memory for data to be specified on construction. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472850 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/unit/qpid/broker/MessageTest.cpp60
1 files changed, 51 insertions, 9 deletions
diff --git a/cpp/test/unit/qpid/broker/MessageTest.cpp b/cpp/test/unit/qpid/broker/MessageTest.cpp
index c0b9225483..8eec9ce6a1 100644
--- a/cpp/test/unit/qpid/broker/MessageTest.cpp
+++ b/cpp/test/unit/qpid/broker/MessageTest.cpp
@@ -19,26 +19,68 @@
#include <qpid_test_plugin.h>
#include <iostream>
+using namespace boost;
using namespace qpid::broker;
using namespace qpid::framing;
+struct DummyHandler : OutputHandler{
+ std::vector<AMQFrame*> frames;
+
+ virtual void send(AMQFrame* frame){
+ frames.push_back(frame);
+ }
+};
+
class MessageTest : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE(MessageTest);
- CPPUNIT_TEST(testMe);
+ CPPUNIT_TEST(testEncodeDecode);
CPPUNIT_TEST_SUITE_END();
public:
- void testMe()
+ void testEncodeDecode()
{
- const int size(10);
- for(int i = 0; i < size; i++){
- Message::shared_ptr msg = Message::shared_ptr(new Message(0, "A", "B", true, true));
- msg->setHeader(AMQHeaderBody::shared_ptr(new AMQHeaderBody()));
- msg->addContent(AMQContentBody::shared_ptr(new AMQContentBody()));
- msg.reset();
- }
+ string exchange = "MyExchange";
+ string routingKey = "MyRoutingKey";
+ string messageId = "MyMessage";
+ string data1("abcdefg");
+ string data2("hijklmn");
+
+ Message::shared_ptr msg = Message::shared_ptr(new Message(0, exchange, routingKey, false, false));
+ AMQHeaderBody::shared_ptr header(new AMQHeaderBody(BASIC));
+ header->setContentSize(14);
+ AMQContentBody::shared_ptr part1(new AMQContentBody(data1));
+ AMQContentBody::shared_ptr part2(new AMQContentBody(data2));
+ msg->setHeader(header);
+ msg->addContent(part1);
+ msg->addContent(part2);
+
+ msg->getHeaderProperties()->setMessageId(messageId);
+ msg->getHeaderProperties()->setDeliveryMode(PERSISTENT);
+ msg->getHeaderProperties()->getHeaders().setString("abc", "xyz");
+
+ Buffer buffer(msg->encodedSize());
+ msg->encode(buffer);
+ buffer.flip();
+
+ msg = Message::shared_ptr(new Message(buffer));
+ CPPUNIT_ASSERT_EQUAL(exchange, msg->getExchange());
+ CPPUNIT_ASSERT_EQUAL(routingKey, msg->getRoutingKey());
+ CPPUNIT_ASSERT_EQUAL(messageId, msg->getHeaderProperties()->getMessageId());
+ CPPUNIT_ASSERT_EQUAL((u_int8_t) PERSISTENT, msg->getHeaderProperties()->getDeliveryMode());
+ CPPUNIT_ASSERT_EQUAL(string("xyz"), msg->getHeaderProperties()->getHeaders().getString("abc"));
+ CPPUNIT_ASSERT_EQUAL((u_int64_t) 14, msg->contentSize());
+
+ DummyHandler handler;
+ msg->deliver(&handler, 0, "ignore", 0, 100);
+ CPPUNIT_ASSERT_EQUAL((size_t) 4, handler.frames.size());
+ AMQContentBody::shared_ptr contentBody1(dynamic_pointer_cast<AMQContentBody, AMQBody>(handler.frames[2]->getBody()));
+ AMQContentBody::shared_ptr contentBody2(dynamic_pointer_cast<AMQContentBody, AMQBody>(handler.frames[3]->getBody()));
+ CPPUNIT_ASSERT(contentBody1);
+ CPPUNIT_ASSERT(contentBody2);
+ CPPUNIT_ASSERT_EQUAL(data1, contentBody1->getData());
+ CPPUNIT_ASSERT_EQUAL(data2, contentBody2->getData());
}
};