summaryrefslogtreecommitdiff
path: root/qpid/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
commit5fa35f84f22f7c4fde4e436cf780a4b905a9ef35 (patch)
tree407ae39b68d7743d7b18fa50b1cd5262728200aa /qpid/cpp/test
parentfde5a5075065dabdebbc62403831c6a0747178b7 (diff)
downloadqpid-python-5fa35f84f22f7c4fde4e436cf780a4b905a9ef35.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@472850 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/test')
-rw-r--r--qpid/cpp/test/unit/qpid/broker/MessageTest.cpp60
1 files changed, 51 insertions, 9 deletions
diff --git a/qpid/cpp/test/unit/qpid/broker/MessageTest.cpp b/qpid/cpp/test/unit/qpid/broker/MessageTest.cpp
index c0b9225483..8eec9ce6a1 100644
--- a/qpid/cpp/test/unit/qpid/broker/MessageTest.cpp
+++ b/qpid/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());
}
};