enum_test.cxx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include <compare>
  2. #include <gmock/gmock.h>
  3. #include <gtest/gtest.h>
  4. #include <jvalidate/status.h>
  5. #include <jvalidate/validation_visitor.h>
  6. using testing::Eq;
  7. using testing::Not;
  8. TEST(StatusTest, Spaceship) {
  9. using jvalidate::Status;
  10. using enum jvalidate::Status::Enum;
  11. EXPECT_THAT(Status(Accept) <=> Status(Reject), Not(std::strong_ordering::equal));
  12. }
  13. TEST(StatusTest, Not) {
  14. using jvalidate::Status;
  15. using enum jvalidate::Status::Enum;
  16. EXPECT_THAT(!Status(Accept), Eq(Reject));
  17. EXPECT_THAT(!Status(Reject), Eq(Accept));
  18. EXPECT_THAT(!Status(Noop), Eq(Noop));
  19. }
  20. TEST(StatusTest, Or) {
  21. using jvalidate::Status;
  22. using enum jvalidate::Status::Enum;
  23. EXPECT_THAT(Status(Accept) | Status(Accept), Eq(Accept));
  24. EXPECT_THAT(Status(Accept) | Status(Noop), Eq(Accept));
  25. EXPECT_THAT(Status(Accept) | Status(Reject), Eq(Accept));
  26. EXPECT_THAT(Status(Noop) | Status(Accept), Eq(Accept));
  27. EXPECT_THAT(Status(Noop) | Status(Noop), Eq(Noop));
  28. EXPECT_THAT(Status(Noop) | Status(Reject), Eq(Noop));
  29. EXPECT_THAT(Status(Reject) | Status(Accept), Eq(Accept));
  30. EXPECT_THAT(Status(Reject) | Status(Noop), Eq(Noop));
  31. EXPECT_THAT(Status(Reject) | Status(Reject), Eq(Reject));
  32. }
  33. TEST(StatusTest, And) {
  34. using jvalidate::Status;
  35. using enum jvalidate::Status::Enum;
  36. EXPECT_THAT(Status(Accept) & Status(Accept), Eq(Accept));
  37. EXPECT_THAT(Status(Accept) & Status(Noop), Eq(Accept));
  38. EXPECT_THAT(Status(Accept) & Status(Reject), Eq(Reject));
  39. EXPECT_THAT(Status(Noop) & Status(Accept), Eq(Accept));
  40. EXPECT_THAT(Status(Noop) & Status(Noop), Eq(Noop));
  41. EXPECT_THAT(Status(Noop) & Status(Reject), Eq(Reject));
  42. EXPECT_THAT(Status(Reject) & Status(Accept), Eq(Reject));
  43. EXPECT_THAT(Status(Reject) & Status(Noop), Eq(Reject));
  44. EXPECT_THAT(Status(Reject) & Status(Reject), Eq(Reject));
  45. }
  46. TEST(StoreResultsTest, Spaceship) {
  47. using jvalidate::StoreResults;
  48. using enum jvalidate::StoreResults::Enum;
  49. EXPECT_THAT(StoreResults(ForValid) <=> StoreResults(ForInvalid),
  50. Not(std::strong_ordering::equal));
  51. }
  52. TEST(StoreResultsTest, Not) {
  53. using jvalidate::StoreResults;
  54. using enum jvalidate::StoreResults::Enum;
  55. EXPECT_THAT(!StoreResults(ForValid), Eq(ForInvalid));
  56. EXPECT_THAT(!StoreResults(ForInvalid), Eq(ForValid));
  57. EXPECT_THAT(!StoreResults(ForAnything), Eq(ForAnything));
  58. }
  59. TEST(StoreResultsTest, Or) {
  60. using jvalidate::StoreResults;
  61. using enum jvalidate::StoreResults::Enum;
  62. EXPECT_THAT(StoreResults(ForValid) | StoreResults(ForValid), Eq(ForValid));
  63. EXPECT_THAT(StoreResults(ForValid) | StoreResults(ForAnything), Eq(ForValid));
  64. EXPECT_THAT(StoreResults(ForValid) | StoreResults(ForInvalid), Eq(ForValid));
  65. EXPECT_THAT(StoreResults(ForAnything) | StoreResults(ForValid), Eq(ForValid));
  66. EXPECT_THAT(StoreResults(ForAnything) | StoreResults(ForAnything), Eq(ForAnything));
  67. EXPECT_THAT(StoreResults(ForAnything) | StoreResults(ForInvalid), Eq(ForAnything));
  68. EXPECT_THAT(StoreResults(ForInvalid) | StoreResults(ForValid), Eq(ForValid));
  69. EXPECT_THAT(StoreResults(ForInvalid) | StoreResults(ForAnything), Eq(ForAnything));
  70. EXPECT_THAT(StoreResults(ForInvalid) | StoreResults(ForInvalid), Eq(ForInvalid));
  71. }
  72. TEST(StoreResultsTest, And) {
  73. using jvalidate::StoreResults;
  74. using enum jvalidate::StoreResults::Enum;
  75. EXPECT_THAT(StoreResults(ForValid) & StoreResults(ForValid), Eq(ForValid));
  76. EXPECT_THAT(StoreResults(ForValid) & StoreResults(ForAnything), Eq(ForValid));
  77. EXPECT_THAT(StoreResults(ForValid) & StoreResults(ForInvalid), Eq(ForInvalid));
  78. EXPECT_THAT(StoreResults(ForAnything) & StoreResults(ForValid), Eq(ForValid));
  79. EXPECT_THAT(StoreResults(ForAnything) & StoreResults(ForAnything), Eq(ForAnything));
  80. EXPECT_THAT(StoreResults(ForAnything) & StoreResults(ForInvalid), Eq(ForInvalid));
  81. EXPECT_THAT(StoreResults(ForInvalid) & StoreResults(ForValid), Eq(ForInvalid));
  82. EXPECT_THAT(StoreResults(ForInvalid) & StoreResults(ForAnything), Eq(ForInvalid));
  83. EXPECT_THAT(StoreResults(ForInvalid) & StoreResults(ForInvalid), Eq(ForInvalid));
  84. }
  85. #if !defined(JVALIDATE_MONOTEST)
  86. int main(int argc, char ** argv) {
  87. testing::InitGoogleMock(&argc, argv);
  88. return RUN_ALL_TESTS();
  89. }
  90. #endif