forked from BigfootDev/flatbuffers
* add an odd sized test * formatting --------- Co-authored-by: Derek Bailey <derekbailey@google.com>
This commit is contained in:
@@ -34,15 +34,18 @@ void AlignmentTest() {
|
|||||||
|
|
||||||
// creating 5 structs with 2 bytes each
|
// creating 5 structs with 2 bytes each
|
||||||
// 10 bytes in total for Vector data is needed
|
// 10 bytes in total for Vector data is needed
|
||||||
std::vector<JustSmallStruct> small_vector = {
|
std::vector<EvenSmallStruct> even_vector = { { 2, 1 }, { 3, 1 }, { 4, 1 } };
|
||||||
{ 2, 1 }, { 3, 1 }, { 4, 1 }
|
std::vector<OddSmallStruct> odd_vector = { { 6, 5, 4 },
|
||||||
};
|
{ 9, 8, 7 },
|
||||||
|
{ 1, 2, 3 } };
|
||||||
// CreateVectorOfStructs is used in the generated CreateSmallStructsDirect()
|
// CreateVectorOfStructs is used in the generated CreateSmallStructsDirect()
|
||||||
// method, but we test it directly
|
// method, but we test it directly
|
||||||
Offset<Vector<const JustSmallStruct *>> small_structs_offset =
|
Offset<Vector<const EvenSmallStruct *>> even_structs_offset =
|
||||||
builder.CreateVectorOfStructs<JustSmallStruct>(small_vector);
|
builder.CreateVectorOfStructs<EvenSmallStruct>(even_vector);
|
||||||
|
Offset<Vector<const OddSmallStruct *>> odd_structs_offset =
|
||||||
|
builder.CreateVectorOfStructs<OddSmallStruct>(odd_vector);
|
||||||
Offset<SmallStructs> small_structs_root =
|
Offset<SmallStructs> small_structs_root =
|
||||||
CreateSmallStructs(builder, small_structs_offset);
|
CreateSmallStructs(builder, even_structs_offset, odd_structs_offset);
|
||||||
|
|
||||||
builder.Finish(small_structs_root);
|
builder.Finish(small_structs_root);
|
||||||
|
|
||||||
@@ -62,13 +65,17 @@ void AlignmentTest() {
|
|||||||
auto root_msg =
|
auto root_msg =
|
||||||
flatbuffers::GetRoot<SmallStructs>(builder.GetBufferPointer());
|
flatbuffers::GetRoot<SmallStructs>(builder.GetBufferPointer());
|
||||||
|
|
||||||
TEST_EQ(root_msg->small_structs()->size(), small_vector.size());
|
TEST_EQ(root_msg->even_structs()->size(), even_vector.size());
|
||||||
for (flatbuffers::uoffset_t i = 0; i < root_msg->small_structs()->size();
|
for (flatbuffers::uoffset_t i = 0; i < root_msg->even_structs()->size();
|
||||||
++i) {
|
++i) {
|
||||||
TEST_EQ(small_vector[i].var_0(),
|
TEST_EQ(even_vector[i].var_0(), root_msg->even_structs()->Get(i)->var_0());
|
||||||
root_msg->small_structs()->Get(i)->var_0());
|
TEST_EQ(even_vector[i].var_1(), root_msg->even_structs()->Get(i)->var_1());
|
||||||
TEST_EQ(small_vector[i].var_1(),
|
}
|
||||||
root_msg->small_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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,15 +21,24 @@ table BadAlignmentRoot {
|
|||||||
small: [BadAlignmentSmall];
|
small: [BadAlignmentSmall];
|
||||||
}
|
}
|
||||||
|
|
||||||
// sizeof(JustSmallStruct) == 2
|
// sizeof(EvenSmallStruct) == 2
|
||||||
// alignof(JustSmallStruct) == 1
|
// alignof(EvenSmallStruct) == 1
|
||||||
struct JustSmallStruct {
|
struct EvenSmallStruct {
|
||||||
var_0: uint8;
|
var_0: uint8;
|
||||||
var_1: uint8;
|
var_1: uint8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sizeof(OddSmallStruct) == 3
|
||||||
|
// alignof(OddSmallStruct) == 1
|
||||||
|
struct OddSmallStruct {
|
||||||
|
var_0: uint8;
|
||||||
|
var_1: uint8;
|
||||||
|
var_2: uint8;
|
||||||
|
}
|
||||||
|
|
||||||
table SmallStructs {
|
table SmallStructs {
|
||||||
small_structs: [JustSmallStruct];
|
even_structs: [EvenSmallStruct];
|
||||||
|
odd_structs: [OddSmallStruct];
|
||||||
}
|
}
|
||||||
|
|
||||||
root_type SmallStructs;
|
root_type SmallStructs;
|
||||||
|
|||||||
Reference in New Issue
Block a user