diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2008-11-11 20:49:46 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2008-11-11 20:49:46 +0000 |
| commit | 0819d43fa68030f7fe13d9f4a7022bf31fca2a87 (patch) | |
| tree | e2384298ce224090a37cf096675e8e1770769002 | |
| parent | 113cc5b1517b1c81216500c63472de0b797a5775 (diff) | |
| download | qpid-python-0819d43fa68030f7fe13d9f4a7022bf31fca2a87.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@713160 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | qpid/cpp/src/qpid/framing/FieldValue.h | 2 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/FieldTable.cpp | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/framing/FieldValue.h b/qpid/cpp/src/qpid/framing/FieldValue.h index 4f78d7f0f2..8a2d9e49e3 100644 --- a/qpid/cpp/src/qpid/framing/FieldValue.h +++ b/qpid/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/qpid/cpp/src/tests/FieldTable.cpp b/qpid/cpp/src/tests/FieldTable.cpp index bf95cee85a..6b364723cf 100644 --- a/qpid/cpp/src/tests/FieldTable.cpp +++ b/qpid/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")); } |
