|  | 
| 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