summaryrefslogtreecommitdiff
path: root/qpid/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
commit7da23f2ec7b60e6a68e0a735b7aa3e1910605ffd (patch)
tree12d8dfc445e2ed1732d19fddeb77006fe61c39d8 /qpid/cpp/src/tests/Variant.cpp
parenta6bb93082956780c68c34a0f44a73911a463ae42 (diff)
downloadqpid-python-7da23f2ec7b60e6a68e0a735b7aa3e1910605ffd.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@1028501 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/Variant.cpp')
-rw-r--r--qpid/cpp/src/tests/Variant.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/qpid/cpp/src/tests/Variant.cpp b/qpid/cpp/src/tests/Variant.cpp
index 596bde36de..b4188f524b 100644
--- a/qpid/cpp/src/tests/Variant.cpp
+++ b/qpid/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