Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

76 linhas
1.6 KiB

  1. #include <gtest/gtest.h>
  2. namespace flags_tests
  3. {
  4. #include "../src/cpputils/Flags.h"
  5. }
  6. using namespace ::testing;
  7. using namespace ::flags_tests::utl;
  8. enum class TestFlag : uint8_t
  9. {
  10. value0,
  11. value1,
  12. value2,
  13. value3,
  14. value4
  15. };
  16. using TestFlags = ShiftedFlags<TestFlag>;
  17. TEST(FlagsTest, ctor)
  18. {
  19. TestFlags f0;
  20. EXPECT_EQ(0, f0());
  21. TestFlags f1({ TestFlag::value1, TestFlag::value3 });
  22. EXPECT_EQ(10, f1());
  23. TestFlags f2(f1);
  24. EXPECT_EQ(10, f2());
  25. TestFlags f3(TestFlag::value3);
  26. EXPECT_EQ(8, f3());
  27. }
  28. TEST(FlagsTest, set)
  29. {
  30. TestFlags f;
  31. EXPECT_FALSE(static_cast<bool>(f));
  32. f.set(TestFlag::value1);
  33. EXPECT_TRUE(static_cast<bool>(f));
  34. EXPECT_TRUE(f[TestFlag::value1]);
  35. }
  36. TEST(FlagsTest, isSet)
  37. {
  38. TestFlags f({ TestFlag::value1, TestFlag::value3 });
  39. EXPECT_FALSE(f[TestFlag::value0]);
  40. EXPECT_TRUE (f[TestFlag::value1]);
  41. EXPECT_FALSE(f[TestFlag::value2]);
  42. EXPECT_TRUE (f[TestFlag::value3]);
  43. EXPECT_FALSE(f[TestFlag::value4]);
  44. EXPECT_FALSE(f.isSet(TestFlag::value0));
  45. EXPECT_TRUE (f.isSet(TestFlag::value1));
  46. EXPECT_FALSE(f.isSet(TestFlag::value2));
  47. EXPECT_TRUE (f.isSet(TestFlag::value3));
  48. EXPECT_FALSE(f.isSet(TestFlag::value4));
  49. }
  50. TEST(FlagsTest, clear)
  51. {
  52. TestFlags f({ TestFlag::value1, TestFlag::value3 });
  53. f.clear(TestFlag::value1);
  54. EXPECT_FALSE(f.isSet(TestFlag::value1));
  55. EXPECT_TRUE (f.isSet(TestFlag::value3));
  56. }
  57. TEST(FlagsTest, reset)
  58. {
  59. TestFlags f({ TestFlag::value1, TestFlag::value3 });
  60. f.reset();
  61. EXPECT_FALSE(static_cast<bool>(f));
  62. }