#define ENUM_PROBE #include "enumDetailsData.h" #include // Test type name static_assert(EnumTypeDetails::TYPE_NAME == "GlobalUnscoped"); static_assert(EnumTypeDetails::TYPE_NAME == "GlobalScoped"); static_assert(EnumTypeDetails::TYPE_NAME == "ns::Unscoped"); static_assert(EnumTypeDetails::TYPE_NAME == "ns::Scoped"); static_assert(EnumValueDetails::VALUE_NAME == "Aa"); static_assert(EnumValueDetails::VALUE_NAME == "Aa"); static_assert(EnumValueDetails::VALUE_NAME == "Aa"); static_assert(EnumValueDetails::VALUE_NAME == "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::VALUE_NAME == "A"); static_assert(EnumValueDetails::VALUE_NAME == "De"); using EdDd = EnumDetails; static_assert(EnumValueCollection::Vs::size() == 127); static_assert(EdDd::VALID_FLAGS.size() == 127); static_assert(EdDd::VALUES.size() == 4); static_assert(std::ranges::is_sorted(EdDd::VALUES)); static_assert(EdDd::VALUES.at(0) == DefaultDense::A); static_assert(EdDd::VALUES.at(3) == DefaultDense::De); static_assert(EdDd::NAMES.at(0) == "A"); static_assert(EdDd::NAMES.at(3) == "De"); static_assert(EdDd::isValid(DefaultDense::A)); static_assert(EdDd::isValid(DefaultDense::De)); static_assert(!EdDd::isValid(DefaultDense(-1))); static_assert(!EdDd::parse("").has_value()); static_assert(!EdDd::parse("nonsense").has_value()); static_assert(EdDd::parse("Bee").value() == DefaultDense::Bee); static_assert(EdDd::parse("Ci").value() == DefaultDense::Ci); static_assert(EdDd::toString(DefaultDense::De).value() == "De"); static_assert(!EdDd::toString(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::VALUE_NAME == "A"); static_assert(EnumValueDetails::VALUE_NAME == "De"); using EdNs = EnumDetails; static_assert(EnumValueCollection::Vs::size() == 7); static_assert(EdNs::VALUES.size() == 4); static_assert(EdNs::VALID_FLAGS.size() == 7); static_assert(std::ranges::is_sorted(EdNs::VALUES)); static_assert(EdNs::VALUES.at(0) == NumberedSparse::Ci); static_assert(EdNs::VALUES.at(1) == NumberedSparse::A); static_assert(EdNs::VALUES.at(2) == NumberedSparse::Bee); static_assert(EdNs::VALUES.at(3) == NumberedSparse::De); static_assert(EdNs::NAMES.at(0) == "Ci"); static_assert(EdNs::NAMES.at(1) == "A"); static_assert(EdNs::NAMES.at(2) == "Bee"); static_assert(EdNs::NAMES.at(3) == "De"); static_assert(EdNs::isValid(NumberedSparse::A)); static_assert(EdNs::isValid(NumberedSparse::De)); static_assert(!EdNs::isValid(NumberedSparse(-1))); static_assert(!EdNs::parse("").has_value()); static_assert(!EdNs::parse("nonsense").has_value()); static_assert(EdNs::parse("Bee").value() == NumberedSparse::Bee); static_assert(EdNs::parse("Ci").value() == NumberedSparse::Ci); static_assert(EdNs::toString(NumberedSparse::Ci).value() == "Ci"); static_assert(!EdNs::toString(static_cast(10)).has_value()); }