1 #include "helpers.hpp" 2 #include "utils/conversion.hpp" 3 4 #include <gmock/gmock.h> 5 6 using namespace testing; 7 8 class TestConversion : public Test 9 { 10 public: 11 enum class Enum 12 { 13 zero = 0, 14 one, 15 two 16 }; 17 18 Enum toEnum(int x) 19 { 20 return utils::toEnum<Enum, utils::minEnumValue(convDataEnum), 21 utils::maxEnumValue(convDataEnum)>(x); 22 } 23 24 Enum toEnum(const std::string& value) 25 { 26 return utils::toEnum(convDataEnum, value); 27 } 28 29 std::string enumToString(Enum value) 30 { 31 return std::string(utils::enumToString(convDataEnum, value)); 32 } 33 34 static constexpr std::array<std::pair<std::string_view, Enum>, 3> 35 convDataEnum = { 36 {std::make_pair<std::string_view, Enum>("zero", Enum::zero), 37 std::make_pair<std::string_view, Enum>("one", Enum::one), 38 std::make_pair<std::string_view, Enum>("two", Enum::two)}}; 39 }; 40 41 TEST_F(TestConversion, passValueInRangeExpectToGetValidOutput) 42 { 43 EXPECT_EQ(toEnum(0), Enum::zero); 44 EXPECT_EQ(toEnum(2), Enum::two); 45 } 46 47 TEST_F(TestConversion, passInvalidValueExpectToThrowException) 48 { 49 EXPECT_THROW(toEnum(-1), sdbusplus::exception::SdBusError); 50 EXPECT_THROW(toEnum(3), sdbusplus::exception::SdBusError); 51 } 52 53 TEST_F(TestConversion, convertsToUnderlyingType) 54 { 55 EXPECT_THAT(utils::toUnderlying(Enum::one), Eq(1)); 56 EXPECT_THAT(utils::toUnderlying(Enum::two), Eq(2)); 57 EXPECT_THAT(utils::toUnderlying(Enum::zero), Eq(0)); 58 } 59 60 TEST_F(TestConversion, convertsEnumToString) 61 { 62 EXPECT_THAT(enumToString(Enum::one), Eq("one")); 63 EXPECT_THAT(enumToString(Enum::two), Eq("two")); 64 EXPECT_THAT(enumToString(Enum::zero), Eq("zero")); 65 } 66 67 TEST_F(TestConversion, convertsStringToEnum) 68 { 69 EXPECT_THAT(toEnum("one"), Eq(Enum::one)); 70 EXPECT_THAT(toEnum("two"), Eq(Enum::two)); 71 EXPECT_THAT(toEnum("zero"), Eq(Enum::zero)); 72 } 73 74 TEST_F(TestConversion, enumToStringThrowsWhenUknownEnumPassed) 75 { 76 EXPECT_THROW(enumToString(static_cast<Enum>(77)), 77 sdbusplus::exception::SdBusError); 78 } 79 80 TEST_F(TestConversion, toEnumThrowsWhenUknownStringPassed) 81 { 82 EXPECT_THROW(toEnum("four"), sdbusplus::exception::SdBusError); 83 } 84