|
18 | 18 | #include "gtest/gtest.h"
|
19 | 19 | #include "group_with_data/TestMessage1.hpp"
|
20 | 20 | #include "group_with_data/TestMessage2.hpp"
|
| 21 | +#include "group_with_data/TestMessage4.hpp" |
21 | 22 |
|
22 | 23 | using namespace std;
|
23 | 24 | using namespace group_with_data;
|
@@ -50,6 +51,7 @@ static const int VAR_DATA_FIELD_2_IDX_1_LENGTH = 11;
|
50 | 51 |
|
51 | 52 | static const int expectedTestMessage1Size = 78;
|
52 | 53 | static const int expectedTestMessage2Size = 107;
|
| 54 | +static const int expectedTestMessage4Size = 73; |
53 | 55 |
|
54 | 56 | class GroupWithDataTest : public testing::Test
|
55 | 57 | {
|
@@ -103,8 +105,30 @@ class GroupWithDataTest : public testing::Test
|
103 | 105 | return msg2_.size();
|
104 | 106 | }
|
105 | 107 |
|
| 108 | + virtual int encodeTestMessage4(char *buffer, int offset, int bufferLength) |
| 109 | + { |
| 110 | + msg4_.wrapForEncode(buffer, offset, bufferLength); |
| 111 | + |
| 112 | + msg4_.tag1(TAG_1); |
| 113 | + |
| 114 | + TestMessage4::Entries &entries = msg4_.entriesCount(ENTRIES_COUNT); |
| 115 | + |
| 116 | + entries.next(); |
| 117 | + |
| 118 | + entries.putVarDataField1(VAR_DATA_FIELD_1_IDX_0, VAR_DATA_FIELD_1_IDX_0_LENGTH); |
| 119 | + entries.putVarDataField2(VAR_DATA_FIELD_2_IDX_0, VAR_DATA_FIELD_2_IDX_0_LENGTH); |
| 120 | + |
| 121 | + entries.next(); |
| 122 | + |
| 123 | + entries.putVarDataField1(VAR_DATA_FIELD_1_IDX_1, VAR_DATA_FIELD_1_IDX_1_LENGTH); |
| 124 | + entries.putVarDataField2(VAR_DATA_FIELD_2_IDX_1, VAR_DATA_FIELD_2_IDX_1_LENGTH); |
| 125 | + |
| 126 | + return msg4_.size(); |
| 127 | + } |
| 128 | + |
106 | 129 | TestMessage1 msg1_;
|
107 | 130 | TestMessage2 msg2_;
|
| 131 | + TestMessage4 msg4_; |
108 | 132 | };
|
109 | 133 |
|
110 | 134 | TEST_F(GroupWithDataTest, shouldBeAbleToEncodeTestMessage1Correctly)
|
@@ -188,7 +212,7 @@ TEST_F(GroupWithDataTest, shouldBeAbleToEncodeTestMessage2Correctly)
|
188 | 212 |
|
189 | 213 | int offset = 0;
|
190 | 214 | EXPECT_EQ(*(sbe_uint32_t *)(bp + offset), TAG_1);
|
191 |
| - EXPECT_EQ(TestMessage1::sbeBlockLength(), 16); |
| 215 | + EXPECT_EQ(TestMessage2::sbeBlockLength(), 16); |
192 | 216 | offset += 16; // root blockLength of 16
|
193 | 217 |
|
194 | 218 | // entries
|
@@ -264,3 +288,74 @@ TEST_F(GroupWithDataTest, shouldbeAbleToEncodeAndDecodeTestMessage2Correctly)
|
264 | 288 |
|
265 | 289 | EXPECT_EQ(msg2Decoder.size(), expectedTestMessage2Size);
|
266 | 290 | }
|
| 291 | + |
| 292 | +TEST_F(GroupWithDataTest, shouldBeAbleToEncodeTestMessage4Correctly) |
| 293 | +{ |
| 294 | + char buffer[2048]; |
| 295 | + const char *bp = buffer; |
| 296 | + int sz = encodeTestMessage4(buffer, 0, sizeof(buffer)); |
| 297 | + |
| 298 | + int offset = 0; |
| 299 | + EXPECT_EQ(*(sbe_uint32_t *)(bp + offset), TAG_1); |
| 300 | + EXPECT_EQ(TestMessage4::sbeBlockLength(), 16); |
| 301 | + offset += 16; // root blockLength of 16 |
| 302 | + |
| 303 | + // entries |
| 304 | + EXPECT_EQ(*(sbe_uint16_t *)(bp + offset), 0); |
| 305 | + offset += sizeof(sbe_uint16_t); |
| 306 | + EXPECT_EQ(*(sbe_uint8_t *)(bp + offset), ENTRIES_COUNT); |
| 307 | + offset += sizeof(sbe_uint8_t); |
| 308 | + |
| 309 | + EXPECT_EQ(*(sbe_uint8_t *)(bp + offset), VAR_DATA_FIELD_1_IDX_0_LENGTH); |
| 310 | + offset += sizeof(sbe_uint8_t); |
| 311 | + EXPECT_EQ(std::string(bp + offset, VAR_DATA_FIELD_1_IDX_0_LENGTH), VAR_DATA_FIELD_1_IDX_0); |
| 312 | + offset += VAR_DATA_FIELD_1_IDX_0_LENGTH; |
| 313 | + EXPECT_EQ(*(sbe_uint8_t *)(bp + offset), VAR_DATA_FIELD_2_IDX_0_LENGTH); |
| 314 | + offset += sizeof(sbe_uint8_t); |
| 315 | + EXPECT_EQ(std::string(bp + offset, VAR_DATA_FIELD_2_IDX_0_LENGTH), VAR_DATA_FIELD_2_IDX_0); |
| 316 | + offset += VAR_DATA_FIELD_2_IDX_0_LENGTH; |
| 317 | + |
| 318 | + EXPECT_EQ(*(sbe_uint8_t *)(bp + offset), VAR_DATA_FIELD_1_IDX_1_LENGTH); |
| 319 | + offset += sizeof(sbe_uint8_t); |
| 320 | + EXPECT_EQ(std::string(bp + offset, VAR_DATA_FIELD_1_IDX_1_LENGTH), VAR_DATA_FIELD_1_IDX_1); |
| 321 | + offset += VAR_DATA_FIELD_1_IDX_1_LENGTH; |
| 322 | + EXPECT_EQ(*(sbe_uint8_t *)(bp + offset), VAR_DATA_FIELD_2_IDX_1_LENGTH); |
| 323 | + offset += sizeof(sbe_uint8_t); |
| 324 | + EXPECT_EQ(std::string(bp + offset, VAR_DATA_FIELD_2_IDX_1_LENGTH), VAR_DATA_FIELD_2_IDX_1); |
| 325 | + offset += VAR_DATA_FIELD_2_IDX_1_LENGTH; |
| 326 | + |
| 327 | + EXPECT_EQ(sz, offset); |
| 328 | +} |
| 329 | + |
| 330 | +TEST_F(GroupWithDataTest, shouldbeAbleToEncodeAndDecodeTestMessage4Correctly) |
| 331 | +{ |
| 332 | + char buffer[2048]; |
| 333 | + int sz = encodeTestMessage4(buffer, 0, sizeof(buffer)); |
| 334 | + |
| 335 | + EXPECT_EQ(sz, expectedTestMessage4Size); |
| 336 | + |
| 337 | + TestMessage4 msg4Decoder(buffer, sizeof(buffer), TestMessage4::sbeBlockLength(), TestMessage4::sbeSchemaVersion()); |
| 338 | + |
| 339 | + EXPECT_EQ(msg4Decoder.tag1(), TAG_1); |
| 340 | + |
| 341 | + TestMessage4::Entries &entries = msg4Decoder.entries(); |
| 342 | + EXPECT_EQ(entries.count(), ENTRIES_COUNT); |
| 343 | + |
| 344 | + ASSERT_TRUE(entries.hasNext()); |
| 345 | + entries.next(); |
| 346 | + |
| 347 | + EXPECT_EQ(entries.varDataField1Length(), VAR_DATA_FIELD_1_IDX_0_LENGTH); |
| 348 | + EXPECT_EQ(std::string(entries.varDataField1(), VAR_DATA_FIELD_1_IDX_0_LENGTH), VAR_DATA_FIELD_1_IDX_0); |
| 349 | + EXPECT_EQ(entries.varDataField2Length(), VAR_DATA_FIELD_2_IDX_0_LENGTH); |
| 350 | + EXPECT_EQ(std::string(entries.varDataField2(), VAR_DATA_FIELD_2_IDX_0_LENGTH), VAR_DATA_FIELD_2_IDX_0); |
| 351 | + |
| 352 | + ASSERT_TRUE(entries.hasNext()); |
| 353 | + entries.next(); |
| 354 | + |
| 355 | + EXPECT_EQ(entries.varDataField1Length(), VAR_DATA_FIELD_1_IDX_1_LENGTH); |
| 356 | + EXPECT_EQ(std::string(entries.varDataField1(), VAR_DATA_FIELD_1_IDX_1_LENGTH), VAR_DATA_FIELD_1_IDX_1); |
| 357 | + EXPECT_EQ(entries.varDataField2Length(), VAR_DATA_FIELD_2_IDX_1_LENGTH); |
| 358 | + EXPECT_EQ(std::string(entries.varDataField2(), VAR_DATA_FIELD_2_IDX_1_LENGTH), VAR_DATA_FIELD_2_IDX_1); |
| 359 | + |
| 360 | + EXPECT_EQ(msg4Decoder.size(), expectedTestMessage4Size); |
| 361 | +} |
0 commit comments