Skip to content

Commit d9b13ff

Browse files
committed
Integration tests: Test templates
1 parent 5dd92b7 commit d9b13ff

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

test/integration/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ set(INTEGRATION_TEST_CONFIGS
4444
std_variant.toml
4545
std_vector.toml
4646
std_vector_del_allocator.toml
47+
templates.toml
4748
typedefs.toml
4849
typedefed_parent.toml
4950
)

test/integration/templates.toml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
includes = ["vector"]
2+
definitions = '''
3+
template <typename T>
4+
class TemplatedClass1 {
5+
T val;
6+
};
7+
8+
template <typename T, typename S>
9+
class TemplatedClass2 {
10+
TemplatedClass1<T> tc1;
11+
S val2;
12+
};
13+
14+
struct Foo {
15+
int a;
16+
int b;
17+
};
18+
19+
template <int N>
20+
struct TemplatedClassVal {
21+
int arr[N];
22+
};
23+
'''
24+
25+
[cases]
26+
[cases.int]
27+
param_types = ["const TemplatedClass1<int>&"]
28+
setup = "return {};"
29+
expect_json = '''[{
30+
"typeName":"TemplatedClass1<int>",
31+
"staticSize":4,
32+
"dynamicSize":0,
33+
"members":[{
34+
"typeName":"int"
35+
}]}]'''
36+
[cases.vector]
37+
param_types = ["const TemplatedClass1<std::vector<int>>&"]
38+
setup = "return {};"
39+
expect_json = '''[{
40+
"typeName":"TemplatedClass1<std::vector<int, std::allocator<int> > >",
41+
"staticSize":24,
42+
"dynamicSize":0,
43+
"members":[{
44+
"typeName":"vector<int, std::allocator<int> >",
45+
"staticSize":24,
46+
"dynamicSize":0,
47+
"length":0,
48+
"capacity":0,
49+
"elementStaticSize":4
50+
}]}]'''
51+
[cases.two]
52+
param_types = ["const TemplatedClass2<Foo, int>&"]
53+
setup = "return {};"
54+
expect_json = '''[{
55+
"typeName":"TemplatedClass2<ns_templates::Foo, int>",
56+
"staticSize":12,
57+
"dynamicSize":0,
58+
"members":[
59+
{"typeName":"TemplatedClass1<ns_templates::Foo>", "staticSize":8, "dynamicSize":0},
60+
{"typeName":"int", "staticSize":4, "dynamicSize":0}
61+
]}]'''
62+
[cases.value]
63+
param_types = ["const TemplatedClassVal<3>&"]
64+
setup = "return {};"
65+
expect_json = '''[{
66+
"typeName":"TemplatedClassVal<3>",
67+
"staticSize":12,
68+
"dynamicSize":0,
69+
"members":[{
70+
"staticSize":12,
71+
"dynamicSize":0,
72+
"length":3,
73+
"capacity":3,
74+
"elementStaticSize":4
75+
}]}]'''

0 commit comments

Comments
 (0)