diff options
author | kmokrov <kmokrov@yandex-team.com> | 2023-10-27 10:15:09 +0300 |
---|---|---|
committer | kmokrov <kmokrov@yandex-team.com> | 2023-10-27 10:32:00 +0300 |
commit | d470ad823626c4d1be8216b0c9eabc553e2bea7c (patch) | |
tree | 9523f0dabf308a3757291572402c99b682df7fda /library/cpp/yt/misc/unittests | |
parent | 83b0a89a4e2d525f6de990f2e1e1478d188cbbb5 (diff) | |
download | ydb-d470ad823626c4d1be8216b0c9eabc553e2bea7c.tar.gz |
YTORM-214: Add unittests for pr-4688904
Diffstat (limited to 'library/cpp/yt/misc/unittests')
-rw-r--r-- | library/cpp/yt/misc/unittests/enum_ut.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/library/cpp/yt/misc/unittests/enum_ut.cpp b/library/cpp/yt/misc/unittests/enum_ut.cpp index 1b1b6d0be2..63b8666ae1 100644 --- a/library/cpp/yt/misc/unittests/enum_ut.cpp +++ b/library/cpp/yt/misc/unittests/enum_ut.cpp @@ -1,5 +1,6 @@ #include <library/cpp/testing/gtest/gtest.h> +#include <library/cpp/yt/misc/cast.h> #include <library/cpp/yt/misc/enum.h> namespace NYT { @@ -42,6 +43,13 @@ DEFINE_ENUM(ECustomString, ((B) (2) ("1_b")) ); +DEFINE_ENUM_WITH_UNDERLYING_TYPE(ECardinal, char, + ((West) (0)) + ((North) (1)) + ((East) (2)) + ((South) (3)) +); + //////////////////////////////////////////////////////////////////////////////// template <class T, size_t N> @@ -249,6 +257,29 @@ TEST(TEnumTest, CustomString) EXPECT_EQ("1_b", ToString(ECustomString::B)); } +TEST(TEnumTest, Cast) +{ + ECardinal cardinal; + { + char validValue = 2; + EXPECT_TRUE(TryEnumCast(validValue, &cardinal)); + EXPECT_EQ(cardinal, ECardinal::East); + } + { + char invalidValue = 100; + EXPECT_FALSE(TryEnumCast(invalidValue, &cardinal)); + } + { + int widerTypeValidValue = 3; + EXPECT_TRUE(TryEnumCast(widerTypeValidValue, &cardinal)); + EXPECT_EQ(cardinal, ECardinal::South); + } + { + int widerTypeInvalueValue = (1 << 8) + 100; + EXPECT_FALSE(TryEnumCast(widerTypeInvalueValue, &cardinal)); + } +} + //////////////////////////////////////////////////////////////////////////////// } // namespace |