You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

  1. #include <gtest/gtest.h>
  2. namespace enum_conversion_tests
  3. {
  4. #include "../src/cpputils/EnumConversion.h"
  5. enum class TestEnum
  6. {
  7. Test0,
  8. Test1,
  9. Test2,
  10. Test3
  11. };
  12. DefEnumToStringMap(
  13. TestEnum,
  14. { TestEnum::Test0, "Test0" },
  15. { TestEnum::Test1, "Test1" },
  16. { TestEnum::Test2, "Test2" },
  17. { TestEnum::Test3, "Test3" }
  18. );
  19. DefStringToEnumMap(
  20. TestEnum,
  21. InvariantStringLess,
  22. { "test0", TestEnum::Test0 },
  23. { "test1", TestEnum::Test1 },
  24. { "test2", TestEnum::Test2 },
  25. { "test3", TestEnum::Test3 }
  26. );
  27. }
  28. using namespace ::testing;
  29. using namespace ::enum_conversion_tests;
  30. using namespace ::enum_conversion_tests::utl;
  31. TEST(EnumConversionTests, toString)
  32. {
  33. EXPECT_EQ(std::string("Test0(0)"), utl::EnumConversion<TestEnum>::toString(TestEnum::Test0, true));
  34. EXPECT_EQ(std::string("Test1"), utl::EnumConversion<TestEnum>::toString(TestEnum::Test1, false));
  35. EXPECT_EQ(std::string("Test2(2)"), utl::EnumConversion<TestEnum>::toString(TestEnum::Test2, true));
  36. EXPECT_EQ(std::string("Test3"), utl::EnumConversion<TestEnum>::toString(TestEnum::Test3, false));
  37. EXPECT_EQ(std::string("123"), utl::EnumConversion<TestEnum>::toString(static_cast<TestEnum>(123), true));
  38. }
  39. TEST(EnumConversionTests, toEnum)
  40. {
  41. TestEnum e;
  42. EXPECT_TRUE (utl::EnumConversion<TestEnum>::tryToEnum("test0", e, false));
  43. EXPECT_EQ (TestEnum::Test0, e);
  44. EXPECT_TRUE (utl::EnumConversion<TestEnum>::tryToEnum("Test1", e, false));
  45. EXPECT_EQ (TestEnum::Test1, e);
  46. EXPECT_FALSE(utl::EnumConversion<TestEnum>::tryToEnum("asd", e, false));
  47. EXPECT_FALSE(utl::EnumConversion<TestEnum>::tryToEnum("1", e, false));
  48. EXPECT_TRUE (utl::EnumConversion<TestEnum>::tryToEnum("2", e, true));
  49. EXPECT_EQ (TestEnum::Test2, e);
  50. }