summaryrefslogtreecommitdiff
path: root/cpp/src/tests/Variant.cpp
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2010-10-28 21:33:52 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2010-10-28 21:33:52 +0000
commite5f27778179696429e4212611c6e5454e2a63e99 (patch)
tree58597637361766aeba3bf863ef4534cc74756643 /cpp/src/tests/Variant.cpp
parent3caac30ac5a8c2be453c1224e010fafa60e17ebf (diff)
downloadqpid-python-e5f27778179696429e4212611c6e5454e2a63e99.tar.gz
QPID-2916: throw an exception when a data value cannot be encoded correctly as its type.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1028501 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/Variant.cpp')
-rw-r--r--cpp/src/tests/Variant.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/cpp/src/tests/Variant.cpp b/cpp/src/tests/Variant.cpp
index 596bde36de..b4188f524b 100644
--- a/cpp/src/tests/Variant.cpp
+++ b/cpp/src/tests/Variant.cpp
@@ -20,10 +20,12 @@
*/
#include <iostream>
#include "qpid/types/Variant.h"
+#include "qpid/amqp_0_10/Codecs.h"
#include "unit_test.h"
using namespace qpid::types;
+using namespace qpid::amqp_0_10;
namespace qpid {
namespace tests {
@@ -686,6 +688,30 @@ QPID_AUTO_TEST_CASE(testEncoding)
BOOST_CHECK_EQUAL(map.asMap()["a"].getEncoding(), map.asMap()["b"].getEncoding());
}
+QPID_AUTO_TEST_CASE(testBufferEncoding)
+{
+ Variant a("abc");
+ a.setEncoding("utf8");
+ std::string buffer;
+
+ Variant::Map inMap, outMap;
+ inMap["a"] = a;
+
+ MapCodec::encode(inMap, buffer);
+ MapCodec::decode(buffer, outMap);
+ BOOST_CHECK_EQUAL(inMap, outMap);
+
+ inMap["b"] = Variant(std::string(65535, 'X'));
+ inMap["b"].setEncoding("utf16");
+ MapCodec::encode(inMap, buffer);
+ MapCodec::decode(buffer, outMap);
+ BOOST_CHECK_EQUAL(inMap, outMap);
+
+ inMap["fail"] = Variant(std::string(65536, 'X'));
+ inMap["fail"].setEncoding("utf16");
+ BOOST_CHECK_THROW(MapCodec::encode(inMap, buffer), std::exception);
+}
+
QPID_AUTO_TEST_SUITE_END()
}} // namespace qpid::tests