BooleanTest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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, operatorAssignment)
  22. {
  23. ls_std::Boolean expression {};
  24. expression = true;
  25. ASSERT_TRUE(expression);
  26. expression = 1;
  27. ASSERT_TRUE(expression);
  28. }
  29. TEST_F(BooleanTest, operatorOutputStream)
  30. {
  31. ls_std::Boolean expression {true};
  32. std::ostringstream _stream {};
  33. _stream << expression;
  34. ASSERT_STREQ("true", _stream.str().c_str());
  35. }
  36. TEST_F(BooleanTest, operatorNot) {
  37. ls_std::Boolean expression {};
  38. ASSERT_TRUE(!expression);
  39. }
  40. TEST_F(BooleanTest, operatorNotNegative) {
  41. ls_std::Boolean expression {true};
  42. ASSERT_FALSE(!expression);
  43. }
  44. TEST_F(BooleanTest, operatorAnd) {
  45. ls_std::Boolean expressionA {true};
  46. ls_std::Boolean expressionB {3 == 3};
  47. ASSERT_TRUE(expressionA && expressionB);
  48. ASSERT_TRUE(expressionB && expressionA);
  49. ASSERT_TRUE(expressionA && true);
  50. ASSERT_TRUE(expressionA && 1);
  51. ASSERT_TRUE(1 && expressionB);
  52. }
  53. TEST_F(BooleanTest, operatorAndNegative) {
  54. ls_std::Boolean expressionA {true};
  55. ls_std::Boolean expressionB {3 == 4};
  56. ASSERT_FALSE(expressionA && expressionB);
  57. ASSERT_FALSE(expressionB && expressionA);
  58. ASSERT_FALSE(expressionB && (3 == 4));
  59. ASSERT_FALSE(expressionB && 0);
  60. ASSERT_FALSE(expressionB && false);
  61. }
  62. TEST_F(BooleanTest, operatorOr) {
  63. ls_std::Boolean expressionA {false};
  64. ls_std::Boolean expressionB {3 == 3};
  65. ASSERT_TRUE(expressionA || expressionB);
  66. ASSERT_TRUE(expressionB || expressionA);
  67. ASSERT_TRUE(expressionA || 1);
  68. ASSERT_TRUE(expressionA || true);
  69. ASSERT_TRUE(1 || expressionA);
  70. }
  71. TEST_F(BooleanTest, operatorOrNegative) {
  72. ls_std::Boolean expressionA {false};
  73. ls_std::Boolean expressionB {3 == 4};
  74. ASSERT_FALSE(expressionA || expressionB);
  75. ASSERT_FALSE(expressionB || expressionA);
  76. ASSERT_FALSE(expressionA || 0);
  77. ASSERT_FALSE(expressionA || false);
  78. ASSERT_FALSE(0 || expressionA);
  79. }
  80. TEST_F(BooleanTest, parse)
  81. {
  82. ls_std::Boolean expression {};
  83. expression.parse("true");
  84. ASSERT_TRUE(expression);
  85. expression.parse("tRue");
  86. ASSERT_TRUE(expression);
  87. expression.parse("TRUE");
  88. ASSERT_TRUE(expression);
  89. }
  90. TEST_F(BooleanTest, parseNegative)
  91. {
  92. ls_std::Boolean expression {};
  93. expression.parse("false");
  94. ASSERT_FALSE(expression);
  95. expression.parse("fAlSe");
  96. ASSERT_FALSE(expression);
  97. expression.parse("FALSE");
  98. ASSERT_FALSE(expression);
  99. }
  100. TEST_F(BooleanTest, toString)
  101. {
  102. ls_std::Boolean expression { 2 < 3};
  103. ASSERT_STREQ("true", expression.toString().c_str());
  104. expression = 4 < 3;
  105. ASSERT_STREQ("false", expression.toString().c_str());
  106. }
  107. }