From d60dc1dfd1d7366981b7108af54c400bc53e4e77 Mon Sep 17 00:00:00 2001 From: Dan Crosby Date: Wed, 24 Jul 2024 06:45:09 -0700 Subject: [PATCH 1/2] add an odd sized test --- tests/alignment_test.cpp | 34 ++++++++++++++++++++++++---------- tests/alignment_test.fbs | 17 +++++++++++++---- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/tests/alignment_test.cpp b/tests/alignment_test.cpp index 1d981e10ed4..ea3cda57a28 100644 --- a/tests/alignment_test.cpp +++ b/tests/alignment_test.cpp @@ -34,15 +34,20 @@ void AlignmentTest() { // creating 5 structs with 2 bytes each // 10 bytes in total for Vector data is needed - std::vector small_vector = { + 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 +67,22 @@ 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(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(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(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 11f5eb79c72..cf32e0d4532 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; From fe26ae5aa5b71862ecf223b57ec723a2ac04fa4d Mon Sep 17 00:00:00 2001 From: Dan Crosby Date: Wed, 24 Jul 2024 06:56:13 -0700 Subject: [PATCH 2/2] formatting --- tests/alignment_test.cpp | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/tests/alignment_test.cpp b/tests/alignment_test.cpp index ea3cda57a28..2641a3180d8 100644 --- a/tests/alignment_test.cpp +++ b/tests/alignment_test.cpp @@ -34,12 +34,10 @@ void AlignmentTest() { // creating 5 structs with 2 bytes each // 10 bytes in total for Vector data is needed - std::vector even_vector = { - { 2, 1 }, { 3, 1 }, { 4, 1 } - }; - std::vector odd_vector = { - { 6, 5, 4 }, { 9, 8, 7 }, { 1, 2, 3 } - }; + 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> even_structs_offset = @@ -70,19 +68,14 @@ void AlignmentTest() { 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(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(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()); + 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()); } }