object-introspection/test/integration/pointers_function.toml
2023-01-04 17:56:37 +00:00

99 lines
2.8 KiB
TOML

includes = ["functional"]
definitions = '''
void myFunction(int x) {
(void)x;
}
// Put this function pointer inside a struct since the test framework doesn't
// support the syntax required for passing raw function pointers as arguments
struct FuncPtrStruct {
void (*p)(int);
};
'''
[cases]
[cases.raw]
oid_skip = "function pointers are not handled correctly"
param_types = ["const FuncPtrStruct&"]
setup = "return {{myFunction}};"
expect_json = '''[{
"staticSize": 8,
"dynamicSize": 0,
"members": [{
"typeName": "void (*)(int)",
"staticSize": 8,
"dynamicSize": 0,
"NOT": {"pointer": 0},
"NOT": "members"
}]
}]'''
[cases.raw_chase] # We should never chase function pointers
oid_skip = "function pointers are not handled correctly"
oil_disable = "oil can't chase raw pointers safely"
param_types = ["const FuncPtrStruct&"]
setup = "return {{myFunction}};"
cli_options = ["--chase-raw-pointers"]
expect_json = '''[{
"staticSize": 8,
"dynamicSize": 0,
"members": [{
"typeName": "void (*)(int)",
"staticSize": 8,
"dynamicSize": 0,
"NOT": {"pointer": 0},
"NOT": "members"
}]
}]'''
[cases.raw_null]
oid_skip = "function pointers are not handled correctly"
param_types = ["const FuncPtrStruct&"]
setup = "return {{nullptr}};"
expect_json = '''[{
"staticSize": 8,
"dynamicSize": 0,
"members": [{
"typeName": "void (*)(int)",
"staticSize": 8,
"dynamicSize": 0,
"pointer": 0,
"NOT": "members"
}]
}]'''
[cases.std_function]
oid_skip = "function pointers are not handled correctly"
param_types = ["std::function<void(int)> &"]
setup = "return myFunction;"
expect_json = '''[{
"typeName": "function<void (int)>",
"staticSize": 32,
"dynamicSize": 0,
"NOT": {"pointer": 0},
"NOT": "members"
}]'''
[cases.std_function_chase] # We should never chase function pointers
oid_skip = "function pointers are not handled correctly"
oil_disable = "oil can't chase raw pointers safely"
param_types = ["std::function<void(int)> &"]
setup = "return myFunction;"
cli_options = ["--chase-raw-pointers"]
expect_json = '''[{
"typeName": "function<void (int)>",
"staticSize": 32,
"dynamicSize": 0,
"NOT": {"pointer": 0},
"NOT": "members"
}]'''
[cases.std_function_null]
oid_skip = "function pointers are not handled correctly"
param_types = ["std::function<void(int)> &"]
setup = "return nullptr;"
expect_json = '''[{
"typeName": "function<void (int)>",
"staticSize": 32,
"dynamicSize": 0,
"pointer": 0,
"NOT": "members"
}]'''