From 43070070e691b91998fd191ddee85f8afea0fda2 Mon Sep 17 00:00:00 2001 From: neargye Date: Wed, 21 Jun 2023 12:45:59 +0400 Subject: [PATCH] fix enum_type_name in namespace --- include/magic_enum.hpp | 11 +++++++++++ test/test.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 2bcdd1e..be0b7c2 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -438,6 +438,17 @@ constexpr auto n() noexcept { #else auto name = str_view{}; #endif + std::size_t p = 0; + for (std::size_t i = name.size_; i > 0; --i) { + if (name.str_[i] == ':') { + p = i + 1; + break; + } + } + if (p > 0) { + name.size_ -= p; + name.str_ += p; + } return name; } else { return str_view{}; // Unsupported compiler or Invalid customize. diff --git a/test/test.cpp b/test/test.cpp index 3e58e13..f974de2 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -844,6 +844,38 @@ TEST_CASE("enum_type_name") { REQUIRE(enum_type_name() == "Numbers"); REQUIRE(enum_type_name() == "Directions"); REQUIRE(enum_type_name() == "number"); + + REQUIRE(enum_type_name() == "lt1"); + REQUIRE(enum_type_name() == "lt2"); + REQUIRE(enum_type_name() == "lt3"); + REQUIRE(enum_type_name() == "lt4"); + REQUIRE(enum_type_name() == "lt5"); + REQUIRE(enum_type_name() == "lt6"); + REQUIRE(enum_type_name() == "lt6"); + + REQUIRE(enum_type_name() == "lt1"); + REQUIRE(enum_type_name() == "lt2"); + REQUIRE(enum_type_name() == "lt3"); + REQUIRE(enum_type_name() == "lt4"); + REQUIRE(enum_type_name() == "lt5"); + REQUIRE(enum_type_name() == "lt6"); + REQUIRE(enum_type_name() == "lt6"); + + REQUIRE(enum_type_name() == "lt1"); + REQUIRE(enum_type_name() == "lt2"); + REQUIRE(enum_type_name() == "lt3"); + REQUIRE(enum_type_name() == "lt4"); + REQUIRE(enum_type_name() == "lt5"); + REQUIRE(enum_type_name() == "lt6"); + REQUIRE(enum_type_name() == "lt6"); + + REQUIRE(enum_type_name() == "a_lt1"); + REQUIRE(enum_type_name() == "a_lt2"); + REQUIRE(enum_type_name() == "a_lt3"); + REQUIRE(enum_type_name() == "a_lt4"); + REQUIRE(enum_type_name() == "a_lt5"); + REQUIRE(enum_type_name() == "a_lt6"); + REQUIRE(enum_type_name() == "a_lt6"); } #if defined(MAGIC_ENUM_SUPPORTED_ALIASES)