#include "enum_cast.h" #include "enum_cast_ut.h" #include Y_UNIT_TEST_SUITE(TestEnumCast) { Y_UNIT_TEST(SafeCastToEnumTest) { UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(0), EIntEnum::Zero); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(1), EIntEnum::One); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(2), EIntEnum::Two); UNIT_ASSERT_EXCEPTION(SafeCastToEnum(3), TBadCastException); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(0), EUcharEnum::Zero); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(1), EUcharEnum::One); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(2), EUcharEnum::Two); UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(3), TBadCastException, "Unexpected enum"); int val1 = 256; UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(val1), TBadCastException, "Unexpected enum"); int val2 = -1; UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(val2), TBadCastException, "Unexpected enum"); int val3 = 2; UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(val3), EUcharEnum::Two); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(false), EBoolEnum::False); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(true), EBoolEnum::True); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(2), UIE_TWO); UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(3), TBadCastException, "Unexpected enum"); UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(9), TBadCastException, "Unexpected enum"); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(static_cast(0)), ECharEnum::Zero); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(static_cast(-1)), ECharEnum::MinusOne); UNIT_ASSERT_VALUES_EQUAL(SafeCastToEnum(static_cast(-2)), ECharEnum::MinusTwo); UNIT_ASSERT_EXCEPTION_CONTAINS( SafeCastToEnum(static_cast(2)), TBadCastException, "Unexpected enum"); } } // Y_UNIT_TEST_SUITE(TestEnumCast)