BooleanTest.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-08-09
  6. * Changed: 2020-08-09
  7. *
  8. * */
  9. #include <gtest/gtest.h>
  10. #include "../../../source/boxing/Boolean.hpp"
  11. namespace {
  12. class BooleanTest : public ::testing::Test {
  13. protected:
  14. BooleanTest() = default;
  15. ~BooleanTest() override = default;
  16. void SetUp() override
  17. {}
  18. void TearDown() override
  19. {}
  20. };
  21. TEST_F(BooleanTest, operatorOutputStream)
  22. {
  23. ls_std::Boolean expression {true};
  24. std::ostringstream _stream {};
  25. _stream << expression;
  26. ASSERT_STREQ("true", _stream.str().c_str());
  27. }
  28. TEST_F(BooleanTest, operatorNot) {
  29. ls_std::Boolean expression {};
  30. ASSERT_TRUE(!expression);
  31. }
  32. TEST_F(BooleanTest, operatorNotNegative) {
  33. ls_std::Boolean expression {true};
  34. ASSERT_FALSE(!expression);
  35. }
  36. TEST_F(BooleanTest, operatorAnd) {
  37. ls_std::Boolean expressionA {true};
  38. ls_std::Boolean expressionB {3 == 3};
  39. ASSERT_TRUE(expressionA && expressionB);
  40. ASSERT_TRUE(expressionB && expressionA);
  41. ASSERT_TRUE(expressionA && true);
  42. ASSERT_TRUE(expressionA && 1);
  43. ASSERT_TRUE(1 && expressionB);
  44. }
  45. TEST_F(BooleanTest, operatorAndNegative) {
  46. ls_std::Boolean expressionA {true};
  47. ls_std::Boolean expressionB {3 == 4};
  48. ASSERT_FALSE(expressionA && expressionB);
  49. ASSERT_FALSE(expressionB && expressionA);
  50. ASSERT_FALSE(expressionB && (3 == 4));
  51. ASSERT_FALSE(expressionB && 0);
  52. ASSERT_FALSE(expressionB && false);
  53. }
  54. TEST_F(BooleanTest, operatorOr) {
  55. ls_std::Boolean expressionA {false};
  56. ls_std::Boolean expressionB {3 == 3};
  57. ASSERT_TRUE(expressionA || expressionB);
  58. ASSERT_TRUE(expressionB || expressionA);
  59. ASSERT_TRUE(expressionA || 1);
  60. ASSERT_TRUE(expressionA || true);
  61. ASSERT_TRUE(1 || expressionA);
  62. }
  63. TEST_F(BooleanTest, operatorOrNegative) {
  64. ls_std::Boolean expressionA {false};
  65. ls_std::Boolean expressionB {3 == 4};
  66. ASSERT_FALSE(expressionA || expressionB);
  67. ASSERT_FALSE(expressionB || expressionA);
  68. ASSERT_FALSE(expressionA || 0);
  69. ASSERT_FALSE(expressionA || false);
  70. ASSERT_FALSE(0 || expressionA);
  71. }
  72. TEST_F(BooleanTest, parse)
  73. {
  74. ls_std::Boolean expression {};
  75. expression.parse("true");
  76. ASSERT_TRUE(expression);
  77. expression.parse("tRue");
  78. ASSERT_TRUE(expression);
  79. expression.parse("TRUE");
  80. ASSERT_TRUE(expression);
  81. }
  82. TEST_F(BooleanTest, parseNegative)
  83. {
  84. ls_std::Boolean expression {};
  85. expression.parse("false");
  86. ASSERT_FALSE(expression);
  87. expression.parse("fAlSe");
  88. ASSERT_FALSE(expression);
  89. expression.parse("FALSE");
  90. ASSERT_FALSE(expression);
  91. }
  92. }