aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/misc/unittests
diff options
context:
space:
mode:
authorkmokrov <kmokrov@yandex-team.com>2023-10-27 10:15:09 +0300
committerkmokrov <kmokrov@yandex-team.com>2023-10-27 10:32:00 +0300
commitd470ad823626c4d1be8216b0c9eabc553e2bea7c (patch)
tree9523f0dabf308a3757291572402c99b682df7fda /library/cpp/yt/misc/unittests
parent83b0a89a4e2d525f6de990f2e1e1478d188cbbb5 (diff)
downloadydb-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.cpp31
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