diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-22 17:57:47 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-22 17:57:47 +0100 |
commit | 38d7045685d4904d013ea4990a3aa7f5e78309cf (patch) | |
tree | 60915147de5e37dc4a3fab39408b6abbfc49ce09 /test/test-static-enumDetails.cpp | |
parent | Add free extend builder with placeholder network support (diff) | |
download | ilt-38d7045685d4904d013ea4990a3aa7f5e78309cf.tar.bz2 ilt-38d7045685d4904d013ea4990a3aa7f5e78309cf.tar.xz ilt-38d7045685d4904d013ea4990a3aa7f5e78309cf.zip |
Add magic support to printing/parsing/validating enumerations
Diffstat (limited to 'test/test-static-enumDetails.cpp')
-rw-r--r-- | test/test-static-enumDetails.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/test-static-enumDetails.cpp b/test/test-static-enumDetails.cpp new file mode 100644 index 0000000..03c2203 --- /dev/null +++ b/test/test-static-enumDetails.cpp @@ -0,0 +1,78 @@ +#define ENUM_PROBE +#include "enumDetailsData.hpp" +#include <enumDetails.hpp> + +// Test type name +static_assert(EnumTypeDetails<GlobalUnscoped>::typeName == "GlobalUnscoped"); +static_assert(EnumTypeDetails<GlobalScoped>::typeName == "GlobalScoped"); +static_assert(EnumTypeDetails<ns::Unscoped>::typeName == "ns::Unscoped"); +static_assert(EnumTypeDetails<ns::Scoped>::typeName == "ns::Scoped"); + +static_assert(EnumValueDetails<GlobalUnscoped::aa>::valueName == "aa"); +static_assert(EnumValueDetails<GlobalScoped::aa>::valueName == "aa"); +static_assert(EnumValueDetails<ns::Unscoped::aa>::valueName == "aa"); +static_assert(EnumValueDetails<ns::Scoped::aa>::valueName == "aa"); + +namespace test1 { + static_assert(EnumValueDetails<DefaultDense::a>::valid); + static_assert(EnumValueDetails<DefaultDense::de>::valid); + static_assert(EnumValueDetails<static_cast<DefaultDense>(0)>::valid); + static_assert(EnumValueDetails<static_cast<DefaultDense>(3)>::valid); + static_assert(!EnumValueDetails<static_cast<DefaultDense>(-1)>::valid); + static_assert(!EnumValueDetails<static_cast<DefaultDense>(4)>::valid); + static_assert(EnumValueDetails<DefaultDense::a>::valueName == "a"); + static_assert(EnumValueDetails<DefaultDense::de>::valueName == "de"); + using ED_DD = EnumDetails<DefaultDense>; + static_assert(EnumValueCollection<DefaultDense>::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<DefaultDense>(10)).has_value()); +} + +namespace test2 { + static_assert(EnumValueDetails<NumberedSparse::bee>::valid); + static_assert(EnumValueDetails<static_cast<NumberedSparse>(0)>::valid); + static_assert(EnumValueDetails<static_cast<NumberedSparse>(3)>::valid); + static_assert(EnumValueDetails<static_cast<NumberedSparse>(-20)>::valid); + static_assert(EnumValueDetails<static_cast<NumberedSparse>(100)>::valid); + static_assert(!EnumValueDetails<static_cast<NumberedSparse>(2)>::valid); + static_assert(EnumValueDetails<NumberedSparse::a>::valueName == "a"); + static_assert(EnumValueDetails<NumberedSparse::de>::valueName == "de"); + using ED_NS = EnumDetails<NumberedSparse>; + static_assert(EnumValueCollection<NumberedSparse>::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<NumberedSparse>(10)).has_value()); +} |