2424#include < gmock/gmock.h>
2525#include < gtest/gtest.h>
2626
27+ #include < bsl_cstring.h>
2728#include < bsl_memory.h>
2829#include < bsl_vector.h>
2930
@@ -115,6 +116,16 @@ class ContentEncodeTests : public ::testing::Test {
115116 rmqamqp::Framer framer;
116117 bsl::vector<rmqamqpt::Frame> frames;
117118};
119+
120+ bdlb::BigEndianUint64 readBodySize (const rmqamqpt::Frame& frame)
121+ {
122+ bdlb::BigEndianUint64 val;
123+ bsl::memcpy (&val,
124+ frame.rawData () + rmqamqpt::Frame::frameHeaderSize () + 4 ,
125+ sizeof (val));
126+ return val;
127+ }
128+
118129} // namespace
119130
120131TEST (Framer, Heartbeat)
@@ -442,9 +453,8 @@ TEST_F(ContentEncodeTests, ZeroBodySizeDoesNotProduceBodyFrame)
442453 framer.makeFrames (&frames, 2 , rmqamqp::Message (rmqt::Message ()));
443454
444455 EXPECT_THAT (frames, SizeIs (1 ));
445- EXPECT_TRUE (*reinterpret_cast <const bdlb::BigEndianUint64*>(
446- frames[0 ].rawData () + rmqamqpt::Frame::frameHeaderSize () +
447- 4 ) == 0 ); // body size field inside content header frame
456+ EXPECT_TRUE (readBodySize (frames[0 ]) ==
457+ 0 ); // body size field inside content header frame
448458 EXPECT_THAT (frames[0 ].payloadLength (),
449459 Eq (16 )); // Content-header size with delivery mode
450460}
@@ -457,10 +467,8 @@ TEST_F(ContentEncodeTests, SmallMessageIsEncodedInOneFrame)
457467 framer.makeFrames (&frames, 2u , theMessage);
458468
459469 EXPECT_THAT (frames, SizeIs (2 ));
460- EXPECT_TRUE (
461- *reinterpret_cast <const bdlb::BigEndianUint64*>(
462- frames[0 ].rawData () + rmqamqpt::Frame::frameHeaderSize () + 4 ) ==
463- messageBytes); // body size field inside content header frame
470+ EXPECT_TRUE (readBodySize (frames[0 ]) ==
471+ messageBytes); // body size field inside content header frame
464472 EXPECT_THAT (frames[0 ].payloadLength (),
465473 Eq (BYTES_HEADER_WITH_MESSAGEID_DELIVERY_MODE )); // header
466474 EXPECT_THAT (frames[1 ].payloadLength (), Eq (messageBytes)); // body frame
@@ -477,10 +485,8 @@ TEST_F(ContentEncodeTests, LargerMessageIsEncodedInTwoFrames)
477485 rmqamqp::Message (rmqt::Message (
478486 bsl::make_shared<bsl::vector<uint8_t > >(messageBytes))));
479487 EXPECT_THAT (frames, SizeIs (3 ));
480- EXPECT_TRUE (
481- *reinterpret_cast <const bdlb::BigEndianUint64*>(
482- frames[0 ].rawData () + rmqamqpt::Frame::frameHeaderSize () + 4 ) ==
483- messageBytes); // body size field inside content header frame
488+ EXPECT_TRUE (readBodySize (frames[0 ]) ==
489+ messageBytes); // body size field inside content header frame
484490 EXPECT_THAT (frames[0 ].payloadLength (),
485491 Eq (BYTES_HEADER_WITH_MESSAGEID_DELIVERY_MODE )); // header
486492 EXPECT_THAT (frames[1 ].payloadLength (), Eq (firstFrame)); // body frame 1
0 commit comments