diff options
author | Gordon Sim <gsim@apache.org> | 2006-11-09 10:40:56 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-11-09 10:40:56 +0000 |
commit | 72a71413f25916caea6345b956d859d16eb0d3e3 (patch) | |
tree | eb6b07b802f64f9cd8f815270f7596e01cfd9244 /cpp/test | |
parent | 3183bdd1eeec30d40229bc7394e49cb2bccb9526 (diff) | |
download | qpid-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.cpp | 60 |
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()); } }; |