object-introspection/test/integration/thrift_unions.toml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

89 lines
2.9 KiB
TOML
Raw Normal View History

# TODO: The dynamic union tests should be updated when tagged union support is in:
# https://github.com/facebookexperimental/object-introspection/issues/234
thrift_definitions = '''
union StaticUnion {
1: i32 a;
2: i32 b;
3: i32 c;
}
union DynamicUnion {
1: i32 n;
2: list<i32> vec;
}
'''
raw_definitions = '''
namespace cpp2 {
void StaticUnion::__fbthrift_clear() {}
void DynamicUnion::__fbthrift_clear() {}
DynamicUnion::~DynamicUnion() {}
}
'''
[cases]
[cases.static]
param_types = ["const cpp2::StaticUnion&"]
setup = '''
cpp2::StaticUnion ret;
return ret;
'''
expect_json = '''[{
"staticSize":8,
"dynamicSize":0,
"members":[
{"typeName":"cpp2::StaticUnion::storage_type", "name":"value_", "staticSize":4},
{"typeName":"underlying_type_t<cpp2::StaticUnion::Type>", "name":"type_", "staticSize":4}
]}]'''
2023-08-16 20:40:36 +01:00
expect_json_v2 = '''[{
"staticSize":8,
"exclusiveSize":0,
"size":8,
2023-08-16 20:40:36 +01:00
"members":[
{"typeNames":["cpp2::StaticUnion::storage_type"], "name":"value_", "staticSize":4, "exclusiveSize":4, "size":4},
{"typeNames":["underlying_type_t<cpp2::StaticUnion::Type>", "type", "int32_t"], "name":"type_", "staticSize":4, "exclusiveSize":4, "size":4}
2023-08-16 20:40:36 +01:00
]}]'''
[cases.dynamic_int]
param_types = ["const cpp2::DynamicUnion&"]
setup = '''
cpp2::DynamicUnion ret;
ret.set_n(123);
return ret;
'''
expect_json = '''[{
"staticSize":32,
"dynamicSize":0,
"members":[
{"typeName":"cpp2::DynamicUnion::storage_type", "name":"value_", "staticSize":24},
{"typeName":"underlying_type_t<cpp2::DynamicUnion::Type>", "name":"type_", "staticSize":4}
]}]'''
2023-08-16 20:40:36 +01:00
expect_json_v2 = '''[{
"staticSize":32,
"exclusiveSize":4,
"size":32,
2023-08-16 20:40:36 +01:00
"members":[
{"typeNames":["cpp2::DynamicUnion::storage_type"], "name":"value_", "staticSize":24, "exclusiveSize":24, "size":24},
{"typeNames":["underlying_type_t<cpp2::DynamicUnion::Type>", "type", "int32_t"], "name":"type_", "staticSize":4, "exclusiveSize":4, "size":4}
2023-08-16 20:40:36 +01:00
]}]'''
[cases.dynamic_vec]
param_types = ["const cpp2::DynamicUnion&"]
setup = '''
cpp2::DynamicUnion ret;
ret.set_vec({1,2,3});
return ret;
'''
expect_json = '''[{
"staticSize":32,
"dynamicSize":0,
"members":[
{"typeName":"cpp2::DynamicUnion::storage_type", "name":"value_", "staticSize":24},
{"typeName":"underlying_type_t<cpp2::DynamicUnion::Type>", "name":"type_", "staticSize":4}
]}]'''
2023-08-16 20:40:36 +01:00
expect_json_v2 = '''[{
"staticSize":32,
"exclusiveSize":4,
"size":32,
2023-08-16 20:40:36 +01:00
"members":[
{"typeNames":["cpp2::DynamicUnion::storage_type"], "name":"value_", "staticSize":24, "exclusiveSize":24, "size":24},
{"typeNames":["underlying_type_t<cpp2::DynamicUnion::Type>", "type", "int32_t"], "name":"type_", "staticSize":4, "exclusiveSize":4, "size":4}
2023-08-16 20:40:36 +01:00
]}]'''