summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-11-11 20:49:46 +0000
committerRafael H. Schloming <rhs@apache.org>2008-11-11 20:49:46 +0000
commitebd80352a69db1717ebe2b62ff848b75c4ca5f22 (patch)
tree326950c23bad07937f24acbccd96a1e144148de9
parent2b9aba3af8c27b22e4fdc3d8ccd3e0aae0c5c6fc (diff)
downloadqpid-python-ebd80352a69db1717ebe2b62ff848b75c4ca5f22.tar.gz
fixed encoding of 64 bit types and added additional tests for 64 bit integers
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@713160 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--cpp/src/qpid/framing/FieldValue.h2
-rw-r--r--cpp/src/tests/FieldTable.cpp11
2 files changed, 9 insertions, 4 deletions
diff --git a/cpp/src/qpid/framing/FieldValue.h b/cpp/src/qpid/framing/FieldValue.h
index 4f78d7f0f2..8a2d9e49e3 100644
--- a/cpp/src/qpid/framing/FieldValue.h
+++ b/cpp/src/qpid/framing/FieldValue.h
@@ -139,7 +139,7 @@ class FixedWidthValue : public FieldValue::Data {
}
FixedWidthValue(uint64_t v)
{
- for (int i = width; i > 0; --i) {
+ for (int i = width; i > 1; --i) {
octets[i-1] = (uint8_t) (0xFF & v); v >>= 8;
}
octets[0] = (uint8_t) (0xFF & v);
diff --git a/cpp/src/tests/FieldTable.cpp b/cpp/src/tests/FieldTable.cpp
index bf95cee85a..6b364723cf 100644
--- a/cpp/src/tests/FieldTable.cpp
+++ b/cpp/src/tests/FieldTable.cpp
@@ -161,12 +161,17 @@ QPID_AUTO_TEST_CASE(test64GetAndSetConverts)
{
FieldTable args;
args.setInt64("a",100);
+ args.setInt64("b",-(int64_t) ((int64_t) 1<<34));
- args.setUInt64("b",1u);
- BOOST_CHECK_EQUAL(1u, args.getAsUInt64("b"));
+ args.setUInt64("c",1u);
+ args.setUInt64("d",(uint64_t) ((uint64_t) 1<<34));
+ BOOST_CHECK_EQUAL(1u, args.getAsUInt64("c"));
BOOST_CHECK_EQUAL(100u, args.getAsUInt64("a"));
- BOOST_CHECK_EQUAL(1, args.getAsInt64("b"));
+ BOOST_CHECK_EQUAL(1, args.getAsInt64("c"));
BOOST_CHECK_EQUAL(100, args.getAsInt64("a"));
+ BOOST_CHECK_EQUAL(-(int64_t) ((int64_t) 1<<34), args.getAsInt64("b"));
+ BOOST_CHECK_EQUAL((uint64_t) ((uint64_t) 1<<34), args.getAsUInt64("d"));
+ BOOST_CHECK_EQUAL((int64_t) ((int64_t) 1<<34), args.getAsInt64("d"));
}