5
5
#include " test/type_graph_utils.h"
6
6
7
7
using namespace type_graph ;
8
+ using ObjectIntrospection::Feature;
9
+ using ObjectIntrospection::FeatureSet;
10
+
11
+ namespace {
12
+ void test (std::vector<std::reference_wrapper<type_graph::Type>> rootTypes,
13
+ std::string_view expectedAfter) {
14
+ FeatureSet features;
15
+ features[Feature::TreeBuilderV2] = true ;
16
+ ::test (AddPadding::createPass({}), rootTypes, expectedAfter);
17
+ }
18
+ } // namespace
8
19
9
20
TEST (AddPaddingTest, BetweenMembers) {
10
21
auto myclass = Class{0 , Class::Kind::Class, " MyClass" , 16 };
@@ -13,7 +24,7 @@ TEST(AddPaddingTest, BetweenMembers) {
13
24
myclass.members .push_back (Member{myint8, " n1" , 0 });
14
25
myclass.members .push_back (Member{myint64, " n2" , 8 * 8 });
15
26
16
- test (AddPadding::createPass (), {myclass}, R"(
27
+ test ({myclass}, R"(
17
28
[0] Class: MyClass (size: 16)
18
29
Member: n1 (offset: 0)
19
30
Primitive: int8_t
@@ -32,7 +43,7 @@ TEST(AddPaddingTest, AtEnd) {
32
43
myclass.members .push_back (Member{myint64, " n1" , 0 });
33
44
myclass.members .push_back (Member{myint8, " n2" , 8 * 8 });
34
45
35
- test (AddPadding::createPass (), {myclass}, R"(
46
+ test ({myclass}, R"(
36
47
[0] Struct: MyStruct (size: 16)
37
48
Member: n1 (offset: 0)
38
49
Primitive: int64_t
@@ -51,7 +62,7 @@ TEST(AddPaddingTest, UnionNotPadded) {
51
62
myclass.members .push_back (Member{myint64, " n1" , 0 });
52
63
myclass.members .push_back (Member{myint8, " n2" , 0 });
53
64
54
- test (AddPadding::createPass (), {myclass}, R"(
65
+ test ({myclass}, R"(
55
66
[0] Union: MyUnion (size: 8)
56
67
Member: n1 (offset: 0)
57
68
Primitive: int64_t
@@ -86,7 +97,7 @@ TEST(AddPaddingTest, Bitfields) {
86
97
myclass.members .push_back (b4);
87
98
myclass.members .push_back (n);
88
99
89
- test (AddPadding::createPass (), {myclass}, R"(
100
+ test ({myclass}, R"(
90
101
[0] Class: MyClass (size: 16)
91
102
Member: b1 (offset: 0, bitsize: 3)
92
103
Primitive: int64_t
@@ -111,4 +122,29 @@ TEST(AddPaddingTest, Bitfields) {
111
122
)" );
112
123
}
113
124
125
+ TEST (AddPaddingTest, CodeGenCompatibility) {
126
+ auto myint = Primitive{Primitive::Kind::Int32};
127
+ auto vector = getVector (1 );
128
+ vector.templateParams .push_back (TemplateParam{myint});
129
+
130
+ auto myclass = Class{0 , Class::Kind::Class, " MyClass" , 24 };
131
+ myclass.members .push_back (Member{vector, " __oi_parent" , 0 });
132
+
133
+ FeatureSet features;
134
+ features[Feature::TreeBuilderV2] = false ;
135
+ test (AddPadding::createPass (features), {myclass}, R"(
136
+ [0] Class: MyClass (size: 24)
137
+ Member: __oi_parent (offset: 0)
138
+ [1] Container: std::vector (size: 24)
139
+ Param
140
+ Primitive: int32_t
141
+ )" ,
142
+ R"(
143
+ [0] Class: MyClass (size: 24)
144
+ Member: __oi_padding (offset: 0)
145
+ [1] Array: (length: 24)
146
+ Primitive: int8_t
147
+ )" );
148
+ }
149
+
114
150
// TODO test we follow class members, templates, children
0 commit comments