1
0
Fork 0
mirror of https://github.com/Neargye/magic_enum.git synced 2026-01-09 23:34:23 +00:00

add more test

This commit is contained in:
neargye 2023-05-21 17:09:30 +04:00
parent f40a621528
commit 9c710f6119
2 changed files with 24 additions and 9 deletions

View file

@ -442,9 +442,9 @@ constexpr auto n() noexcept {
if (name[0] == '(' || name[0] == '-' || (name[0] >= '0' && name[0] <= '9')) {
name = string_view{};
}
constexpr auto prefix = n<decltype(V)>().size() + 2;
if (name.size() >= prefix) {
name.remove_prefix(prefix);
constexpr auto prefix = n<decltype(V)>().size();
if (name.size() > prefix && name[prefix] == ':') {
name.remove_prefix(prefix + 2);
}
#elif defined(__GNUC__)
auto name = string_view{__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 1};
@ -458,17 +458,17 @@ constexpr auto n() noexcept {
if (name[0] == '(') {
name = string_view{};
}
constexpr auto prefix = n<decltype(V)>().size() + 2;
if (name.size() >= prefix) {
name.remove_prefix(prefix);
constexpr auto prefix = n<decltype(V)>().size();
if (name.size() > prefix && name[prefix] == ':') {
name.remove_prefix(prefix + 2);
}
#elif defined(_MSC_VER)
string_view name;
if ((__FUNCSIG__[5] == '_' && __FUNCSIG__[35] != '(') || (__FUNCSIG__[5] == 'c' && __FUNCSIG__[41] != '(')) {
name = string_view{__FUNCSIG__ + 35, sizeof(__FUNCSIG__) - 52};
constexpr auto prefix = n<decltype(V)>().size() + 2;
if (name.size() >= prefix) {
name.remove_prefix(prefix);
constexpr auto prefix = n<decltype(V)>().size();
if (name.size() > prefix && name[prefix] == ':') {
name.remove_prefix(prefix + 2);
}
}
#else

View file

@ -449,6 +449,11 @@ TEST_CASE("enum_count") {
}
enum lt1 { s1, loooooooooooooooooooong1 };
enum lt2 : unsigned { s2, loooooooooooooooooooong2 };
enum class lt3 { s3, loooooooooooooooooooong3 };
enum class lt4 : unsigned { s4, loooooooooooooooooooong4 };
TEST_CASE("enum_name") {
SECTION("automatic storage") {
constexpr Color cr = Color::RED;
@ -487,6 +492,16 @@ TEST_CASE("enum_name") {
REQUIRE(enum_name(static_cast<number>(0)).empty());
REQUIRE(enum_name(MaxUsedAsInvalid::ONE) == "ONE");
REQUIRE(enum_name(lt1::s1) == "s1");
REQUIRE(enum_name(lt1::loooooooooooooooooooong1) == "loooooooooooooooooooong1");
REQUIRE(enum_name(lt2::s2) == "s2");
REQUIRE(enum_name(lt2::loooooooooooooooooooong2) == "loooooooooooooooooooong2");
REQUIRE(enum_name(lt3::s3) == "s3");
REQUIRE(enum_name(lt3::loooooooooooooooooooong3) == "loooooooooooooooooooong3");
REQUIRE(enum_name(lt4::s4) == "s4");
REQUIRE(enum_name(lt4::loooooooooooooooooooong4) == "loooooooooooooooooooong4");
}
SECTION("static storage") {