diff --git a/tests/alignment_test.cpp b/tests/alignment_test.cpp index 1d981e10e..2641a3180 100644 --- a/tests/alignment_test.cpp +++ b/tests/alignment_test.cpp @@ -34,15 +34,18 @@ void AlignmentTest() { // creating 5 structs with 2 bytes each // 10 bytes in total for Vector data is needed - std::vector small_vector = { - { 2, 1 }, { 3, 1 }, { 4, 1 } - }; + std::vector even_vector = { { 2, 1 }, { 3, 1 }, { 4, 1 } }; + std::vector odd_vector = { { 6, 5, 4 }, + { 9, 8, 7 }, + { 1, 2, 3 } }; // CreateVectorOfStructs is used in the generated CreateSmallStructsDirect() // method, but we test it directly - Offset> small_structs_offset = - builder.CreateVectorOfStructs(small_vector); + Offset> even_structs_offset = + builder.CreateVectorOfStructs(even_vector); + Offset> odd_structs_offset = + builder.CreateVectorOfStructs(odd_vector); Offset small_structs_root = - CreateSmallStructs(builder, small_structs_offset); + CreateSmallStructs(builder, even_structs_offset, odd_structs_offset); builder.Finish(small_structs_root); @@ -62,13 +65,17 @@ void AlignmentTest() { auto root_msg = flatbuffers::GetRoot(builder.GetBufferPointer()); - TEST_EQ(root_msg->small_structs()->size(), small_vector.size()); - for (flatbuffers::uoffset_t i = 0; i < root_msg->small_structs()->size(); + TEST_EQ(root_msg->even_structs()->size(), even_vector.size()); + for (flatbuffers::uoffset_t i = 0; i < root_msg->even_structs()->size(); ++i) { - TEST_EQ(small_vector[i].var_0(), - root_msg->small_structs()->Get(i)->var_0()); - TEST_EQ(small_vector[i].var_1(), - root_msg->small_structs()->Get(i)->var_1()); + TEST_EQ(even_vector[i].var_0(), root_msg->even_structs()->Get(i)->var_0()); + TEST_EQ(even_vector[i].var_1(), root_msg->even_structs()->Get(i)->var_1()); + } + + TEST_EQ(root_msg->odd_structs()->size(), even_vector.size()); + for (flatbuffers::uoffset_t i = 0; i < root_msg->odd_structs()->size(); ++i) { + TEST_EQ(odd_vector[i].var_0(), root_msg->odd_structs()->Get(i)->var_0()); + TEST_EQ(odd_vector[i].var_1(), root_msg->odd_structs()->Get(i)->var_1()); } } diff --git a/tests/alignment_test.fbs b/tests/alignment_test.fbs index 11f5eb79c..cf32e0d45 100644 --- a/tests/alignment_test.fbs +++ b/tests/alignment_test.fbs @@ -21,15 +21,24 @@ table BadAlignmentRoot { small: [BadAlignmentSmall]; } -// sizeof(JustSmallStruct) == 2 -// alignof(JustSmallStruct) == 1 -struct JustSmallStruct { +// sizeof(EvenSmallStruct) == 2 +// alignof(EvenSmallStruct) == 1 +struct EvenSmallStruct { var_0: uint8; var_1: uint8; } +// sizeof(OddSmallStruct) == 3 +// alignof(OddSmallStruct) == 1 +struct OddSmallStruct { + var_0: uint8; + var_1: uint8; + var_2: uint8; +} + table SmallStructs { - small_structs: [JustSmallStruct]; + even_structs: [EvenSmallStruct]; + odd_structs: [OddSmallStruct]; } root_type SmallStructs;