mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-11-10 05:26:56 +00:00
4bfa932b9b
We want to use the fully qualified name for scoped enums to keep the C++ compiler happy. When a parameter expects an enum value, we must supply an enum value and not its underlying integer value. Before: isset_bitset<1, 0> After: isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked>
63 lines
1.7 KiB
TOML
63 lines
1.7 KiB
TOML
includes = ["vector"]
|
|
definitions = '''
|
|
namespace MyNS {
|
|
enum class ScopedEnum {
|
|
Zero = 0,
|
|
One = 1,
|
|
Two = 2,
|
|
};
|
|
|
|
enum UNSCOPED_ENUM {
|
|
ZERO = 0,
|
|
ONE = 1,
|
|
TWO = 2,
|
|
};
|
|
|
|
enum class EnumWithGaps {
|
|
Five = 5,
|
|
MinusTwo = -2,
|
|
Twenty = 20,
|
|
};
|
|
} // MyNS
|
|
|
|
template <MyNS::ScopedEnum val>
|
|
class MyClass {
|
|
int n;
|
|
};
|
|
|
|
template <MyNS::EnumWithGaps val>
|
|
class ClassGaps {
|
|
int n;
|
|
};
|
|
'''
|
|
|
|
[cases]
|
|
[cases.scoped_enum_type]
|
|
param_types = ["const std::vector<MyNS::ScopedEnum>&"]
|
|
setup = "return {};"
|
|
[cases.scoped_enum_val_cast]
|
|
param_types = ["const std::array<int, static_cast<size_t>(MyNS::ScopedEnum::Two)>&"]
|
|
setup = "return {};"
|
|
expect_json = '[{"staticSize":8, "dynamicSize":0, "length":2, "capacity":2, "elementStaticSize":4}]'
|
|
|
|
[cases.scoped_enum_val]
|
|
param_types = ["const MyClass<MyNS::ScopedEnum::One>&"]
|
|
setup = "return {};"
|
|
expect_json = '[{"staticSize":4, "dynamicSize":0, "exclusiveSize":0}]'
|
|
[cases.scoped_enum_val_gaps]
|
|
param_types = ["const ClassGaps<MyNS::EnumWithGaps::Twenty>&"]
|
|
setup = "return {};"
|
|
expect_json = '[{"staticSize":4, "dynamicSize":0, "exclusiveSize":0}]'
|
|
[cases.scoped_enum_val_negative]
|
|
param_types = ["const ClassGaps<MyNS::EnumWithGaps::MinusTwo>&"]
|
|
setup = "return {};"
|
|
expect_json = '[{"staticSize":4, "dynamicSize":0, "exclusiveSize":0}]'
|
|
|
|
[cases.unscoped_enum_type]
|
|
param_types = ["const std::vector<MyNS::UNSCOPED_ENUM>&"]
|
|
setup = "return {};"
|
|
[cases.unscoped_enum_val_cast]
|
|
param_types = ["const std::array<int, MyNS::ONE>&"]
|
|
setup = "return {};"
|
|
expect_json = '[{"staticSize":4, "dynamicSize":0, "length":1, "capacity":1, "elementStaticSize":4}]'
|