#define ENUM_PROBE #include "enumDetailsData.h" #include // Test type name static_assert(EnumTypeDetails::typeName == "GlobalUnscoped"); static_assert(EnumTypeDetails::typeName == "GlobalScoped"); static_assert(EnumTypeDetails::typeName == "ns::Unscoped"); static_assert(EnumTypeDetails::typeName == "ns::Scoped"); static_assert(EnumValueDetails::valueName == "aa"); static_assert(EnumValueDetails::valueName == "aa"); static_assert(EnumValueDetails::valueName == "aa"); static_assert(EnumValueDetails::valueName == "aa"); namespace test1 { static_assert(EnumValueDetails::valid); static_assert(EnumValueDetails::valid); static_assert(EnumValueDetails(0)>::valid); static_assert(EnumValueDetails(3)>::valid); static_assert(!EnumValueDetails(-1)>::valid); static_assert(!EnumValueDetails(4)>::valid); static_assert(EnumValueDetails::valueName == "a"); static_assert(EnumValueDetails::valueName == "de"); using ED_DD = EnumDetails; static_assert(EnumValueCollection::Vs::size() == 256); static_assert(ED_DD::valid_flags.size() == 256); static_assert(ED_DD::values.size() == 4); static_assert(std::is_sorted(ED_DD::values.begin(), ED_DD::values.end())); static_assert(ED_DD::values.at(0) == DefaultDense::a); static_assert(ED_DD::values.at(3) == DefaultDense::de); static_assert(ED_DD::names.at(0) == "a"); static_assert(ED_DD::names.at(3) == "de"); static_assert(ED_DD::is_valid(DefaultDense::a)); static_assert(ED_DD::is_valid(DefaultDense::de)); static_assert(!ED_DD::is_valid(DefaultDense(-1))); static_assert(!ED_DD::parse("").has_value()); static_assert(!ED_DD::parse("nonsense").has_value()); static_assert(ED_DD::parse("bee").value() == DefaultDense::bee); static_assert(ED_DD::parse("ci").value() == DefaultDense::ci); static_assert(ED_DD::to_string(DefaultDense::de).value() == "de"); static_assert(!ED_DD::to_string(static_cast(10)).has_value()); } namespace test2 { static_assert(EnumValueDetails::valid); static_assert(EnumValueDetails(0)>::valid); static_assert(EnumValueDetails(3)>::valid); static_assert(EnumValueDetails(-20)>::valid); static_assert(EnumValueDetails(100)>::valid); static_assert(!EnumValueDetails(2)>::valid); static_assert(EnumValueDetails::valueName == "a"); static_assert(EnumValueDetails::valueName == "de"); using ED_NS = EnumDetails; static_assert(EnumValueCollection::Vs::size() == 7); static_assert(ED_NS::values.size() == 4); static_assert(ED_NS::valid_flags.size() == 7); static_assert(std::is_sorted(ED_NS::values.begin(), ED_NS::values.end())); static_assert(ED_NS::values.at(0) == NumberedSparse::ci); static_assert(ED_NS::values.at(1) == NumberedSparse::a); static_assert(ED_NS::values.at(2) == NumberedSparse::bee); static_assert(ED_NS::values.at(3) == NumberedSparse::de); static_assert(ED_NS::names.at(0) == "ci"); static_assert(ED_NS::names.at(1) == "a"); static_assert(ED_NS::names.at(2) == "bee"); static_assert(ED_NS::names.at(3) == "de"); static_assert(ED_NS::is_valid(NumberedSparse::a)); static_assert(ED_NS::is_valid(NumberedSparse::de)); static_assert(!ED_NS::is_valid(NumberedSparse(-1))); static_assert(!ED_NS::parse("").has_value()); static_assert(!ED_NS::parse("nonsense").has_value()); static_assert(ED_NS::parse("bee").value() == NumberedSparse::bee); static_assert(ED_NS::parse("ci").value() == NumberedSparse::ci); static_assert(ED_NS::to_string(NumberedSparse::ci).value() == "ci"); static_assert(!ED_NS::to_string(static_cast(10)).has_value()); }