summaryrefslogtreecommitdiffstats
path: root/util/generic/enum_cast_ut.cpp
diff options
context:
space:
mode:
authorkshalnev <[email protected]>2025-03-27 09:05:01 +0300
committerkshalnev <[email protected]>2025-03-27 09:20:00 +0300
commit54394ecb8d819f075dddd15ed8cdb4fb822d66cd (patch)
tree17e481976ebfee5cff047cdf5773844199c72a20 /util/generic/enum_cast_ut.cpp
parent6f57592a3b6099c881ca20f5b54520a3852a1d56 (diff)
Added SafeCastToEnum
commit_hash:44102d9b2c000eefdfd91997a40a055b29d647c7
Diffstat (limited to 'util/generic/enum_cast_ut.cpp')
-rw-r--r--util/generic/enum_cast_ut.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/util/generic/enum_cast_ut.cpp b/util/generic/enum_cast_ut.cpp
new file mode 100644
index 00000000000..0b96235bcaf
--- /dev/null
+++ b/util/generic/enum_cast_ut.cpp
@@ -0,0 +1,49 @@
+#include "enum_cast.h"
+
+#include "enum_cast_ut.h"
+
+#include <library/cpp/testing/unittest/registar.h>
+
+Y_UNIT_TEST_SUITE(TestEnumCast) {
+ Y_UNIT_TEST(SafeCastToEnumTest) {
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EIntEnum>(0), EIntEnum::Zero);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EIntEnum>(1), EIntEnum::One);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EIntEnum>(2), EIntEnum::Two);
+ UNIT_ASSERT_EXCEPTION(SafeCastToEnum<EIntEnum>(3), TBadCastException);
+
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EUcharEnum>(0), EUcharEnum::Zero);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EUcharEnum>(1), EUcharEnum::One);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EUcharEnum>(2), EUcharEnum::Two);
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<EUcharEnum>(3), TBadCastException,
+ "Unexpected enum");
+ int val1 = 256;
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<EUcharEnum>(val1), TBadCastException,
+ "Unexpected enum");
+ int val2 = -1;
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<EUcharEnum>(val2), TBadCastException,
+ "Unexpected enum");
+ int val3 = 2;
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EUcharEnum>(val3), EUcharEnum::Two);
+
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EBoolEnum>(false), EBoolEnum::False);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EBoolEnum>(true), EBoolEnum::True);
+
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<EUnscopedIntEnum>(2), UIE_TWO);
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<EUnscopedIntEnum>(3), TBadCastException,
+ "Unexpected enum");
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<EUnscopedIntEnum>(9), TBadCastException,
+ "Unexpected enum");
+
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<ECharEnum>(static_cast<unsigned int>(0)), ECharEnum::Zero);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<ECharEnum>(static_cast<short>(-1)), ECharEnum::MinusOne);
+ UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum<ECharEnum>(static_cast<int>(-2)), ECharEnum::MinusTwo);
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ SafeCastToEnum<ECharEnum>(static_cast<int>(2)), TBadCastException,
+ "Unexpected enum");
+ }
+} // Y_UNIT_TEST_SUITE(TestEnumCast)