object-introspection/test/integration/templates.toml
Jake Hillion 5071519e45 oil v2
2023-08-23 15:59:53 +01:00

99 lines
2.5 KiB
TOML

includes = ["vector"]
definitions = '''
template <typename T>
class TemplatedClass1 {
T val;
};
template <typename T, typename S>
class TemplatedClass2 {
TemplatedClass1<T> tc1;
S val2;
};
struct Foo {
int a;
int b;
};
template <int N>
struct TemplatedClassVal {
int arr[N];
};
'''
[cases]
[cases.int]
oil_skip = "primitives are named differently in treebuilderv2" # https://github.com/facebookexperimental/object-introspection/issues/286
param_types = ["const TemplatedClass1<int>&"]
setup = "return {};"
expect_json = '''[{
"typeName":"TemplatedClass1<int>",
"staticSize":4,
"dynamicSize":0,
"members":[{
"typeName":"int"
}]}]'''
[cases.vector]
param_types = ["const TemplatedClass1<std::vector<int>>&"]
setup = "return {};"
expect_json = '''[{
"typeName":"TemplatedClass1<std::vector<int, std::allocator<int> > >",
"staticSize":24,
"dynamicSize":0,
"members":[{
"typeName":"vector<int, std::allocator<int> >",
"staticSize":24,
"dynamicSize":0,
"length":0,
"capacity":0,
"elementStaticSize":4
}]}]'''
expect_json_v2 = '''[{
"typeName":"TemplatedClass1<std::vector<int, std::allocator<int> > >",
"staticSize":24,
"exclusiveSize":0,
"members":[{
"typeName":"std::vector<int32_t, std::allocator<int32_t>>",
"staticSize":24,
"exclusiveSize":24,
"length":0,
"capacity":0
}]}]'''
[cases.two]
oil_skip = "OIL returns better primitive names"
param_types = ["const TemplatedClass2<Foo, int>&"]
setup = "return {};"
expect_json = '''[{
"typeName":"TemplatedClass2<ns_templates::Foo, int>",
"staticSize":12,
"dynamicSize":0,
"members":[
{"typeName":"TemplatedClass1<ns_templates::Foo>", "staticSize":8, "dynamicSize":0},
{"typeName":"int", "staticSize":4, "dynamicSize":0}
]}]'''
[cases.value]
param_types = ["const TemplatedClassVal<3>&"]
setup = "return {};"
expect_json = '''[{
"typeName":"TemplatedClassVal<3>",
"staticSize":12,
"dynamicSize":0,
"members":[{
"staticSize":12,
"dynamicSize":0,
"length":3,
"capacity":3,
"elementStaticSize":4
}]}]'''
expect_json_v2 = '''[{
"typeName":"TemplatedClassVal<3>",
"staticSize":12,
"exclusiveSize":0,
"members":[{
"staticSize":12,
"exclusiveSize":0,
"length":3,
"capacity":3
}]}]'''