summaryrefslogtreecommitdiff
path: root/cpp/tests/FramingTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/tests/FramingTest.cpp')
-rw-r--r--cpp/tests/FramingTest.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/cpp/tests/FramingTest.cpp b/cpp/tests/FramingTest.cpp
index b081b5822b..445d13e384 100644
--- a/cpp/tests/FramingTest.cpp
+++ b/cpp/tests/FramingTest.cpp
@@ -30,8 +30,10 @@
#include "AMQResponseBody.h"
#include "Requester.h"
#include "Responder.h"
+#include <QpidError.h>
using namespace qpid::framing;
+using qpid::QpidError;
template <class T>
std::string tostring(const T& x)
@@ -57,6 +59,7 @@ class FramingTest : public CppUnit::TestCase
CPPUNIT_TEST(testResponder);
CPPUNIT_TEST(testInlineContent);
CPPUNIT_TEST(testContentReference);
+ CPPUNIT_TEST(testContentValidation);
CPPUNIT_TEST_SUITE_END();
private:
@@ -199,6 +202,37 @@ class FramingTest : public CppUnit::TestCase
CPPUNIT_ASSERT_EQUAL(content.getValue(), recovered.getValue());
}
+ void testContentValidation() {
+ try {
+ Content content(REFERENCE, "");
+ CPPUNIT_ASSERT(false);//fail, expected exception
+ } catch (QpidError& e) {
+ CPPUNIT_ASSERT_EQUAL(FRAMING_ERROR, e.code);
+ CPPUNIT_ASSERT_EQUAL(string("Reference cannot be empty"), e.msg);
+ }
+
+ try {
+ Content content(2, "Blah");
+ CPPUNIT_ASSERT(false);//fail, expected exception
+ } catch (QpidError& e) {
+ CPPUNIT_ASSERT_EQUAL(FRAMING_ERROR, e.code);
+ CPPUNIT_ASSERT_EQUAL(string("Invalid discriminator: 2"), e.msg);
+ }
+
+ try {
+ buffer.putOctet(2);
+ buffer.putLongString("blah, blah");
+ buffer.flip();
+ Content content;
+ content.decode(buffer);
+ CPPUNIT_ASSERT(false);//fail, expected exception
+ } catch (QpidError& e) {
+ CPPUNIT_ASSERT_EQUAL(FRAMING_ERROR, e.code);
+ CPPUNIT_ASSERT_EQUAL(string("Invalid discriminator: 2"), e.msg);
+ }
+
+ }
+
void testRequester() {
Requester r;
AMQRequestBody::Data q;