Skip to content

Commit 7545539

Browse files
committed
feat: add tests for CheckConditionEvaluator functionality
1 parent 22754f3 commit 7545539

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

src/modules/sca/tests/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ target_include_directories(sca_event_handler_test PRIVATE ${CMAKE_CURRENT_SOURCE
1919
target_link_libraries(sca_event_handler_test PRIVATE SCA GTest::gtest GTest::gmock GTest::gtest_main)
2020
add_test(NAME SCAEventHandlerTest COMMAND sca_event_handler_test)
2121

22+
add_executable(check_condition_evaluator_test check_condition_evaluator_test.cpp)
23+
configure_target(check_condition_evaluator_test)
24+
target_include_directories(check_condition_evaluator_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
25+
target_link_libraries(check_condition_evaluator_test PRIVATE SCA GTest::gtest GTest::gtest_main)
26+
add_test(NAME CheckConditionEvaluatorTest COMMAND check_condition_evaluator_test)
27+
2228
add_executable(rule_creation_test rule_creation_test.cpp)
2329
configure_target(rule_creation_test)
2430
target_include_directories(rule_creation_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#include <gtest/gtest.h>
2+
3+
#include <check_condition_evaluator.hpp>
4+
5+
TEST(CheckConditionEvaluatorTest, FromStringValidValues)
6+
{
7+
EXPECT_NO_THROW({
8+
const auto evaluator = CheckConditionEvaluator::FromString("all");
9+
EXPECT_FALSE(evaluator.Result());
10+
});
11+
12+
EXPECT_NO_THROW({
13+
const auto evaluator = CheckConditionEvaluator::FromString("any");
14+
EXPECT_FALSE(evaluator.Result());
15+
});
16+
17+
EXPECT_NO_THROW({
18+
const auto evaluator = CheckConditionEvaluator::FromString("none");
19+
EXPECT_TRUE(evaluator.Result());
20+
});
21+
}
22+
23+
TEST(CheckConditionEvaluatorTest, FromStringInvalidValueThrows)
24+
{
25+
EXPECT_THROW(CheckConditionEvaluator::FromString("invalid"), std::invalid_argument);
26+
}
27+
28+
TEST(CheckConditionEvaluatorTest, AllConditionBehavior)
29+
{
30+
auto evaluator = CheckConditionEvaluator::FromString("all");
31+
32+
// No rules added yet: should be false.
33+
EXPECT_FALSE(evaluator.Result());
34+
35+
evaluator.AddResult(true);
36+
evaluator.AddResult(true);
37+
evaluator.AddResult(true);
38+
EXPECT_TRUE(evaluator.Result());
39+
40+
// Adding a failing rule
41+
auto evaluator2 = CheckConditionEvaluator::FromString("all");
42+
evaluator2.AddResult(true);
43+
evaluator2.AddResult(false);
44+
evaluator2.AddResult(true);
45+
EXPECT_FALSE(evaluator2.Result());
46+
}
47+
48+
TEST(CheckConditionEvaluatorTest, AnyConditionBehavior)
49+
{
50+
auto evaluator = CheckConditionEvaluator::FromString("any");
51+
52+
// No rules added yet: should be false.
53+
EXPECT_FALSE(evaluator.Result());
54+
55+
evaluator.AddResult(false);
56+
evaluator.AddResult(false);
57+
EXPECT_FALSE(evaluator.Result());
58+
59+
evaluator.AddResult(true);
60+
EXPECT_TRUE(evaluator.Result());
61+
}
62+
63+
TEST(CheckConditionEvaluatorTest, NoneConditionBehavior)
64+
{
65+
auto evaluator = CheckConditionEvaluator::FromString("none");
66+
67+
// No rules added yet: should be true.
68+
EXPECT_TRUE(evaluator.Result());
69+
70+
evaluator.AddResult(false);
71+
evaluator.AddResult(false);
72+
EXPECT_TRUE(evaluator.Result());
73+
74+
evaluator.AddResult(true); // At least one passed -> should now be false.
75+
EXPECT_FALSE(evaluator.Result());
76+
}
77+
78+
TEST(CheckConditionEvaluatorTest, AddResultStopsAfterResultDetermined)
79+
{
80+
auto evaluator = CheckConditionEvaluator::FromString("any");
81+
82+
evaluator.AddResult(true); // Should determine result = true immediately
83+
EXPECT_TRUE(evaluator.Result());
84+
85+
evaluator.AddResult(false); // Should have no effect
86+
EXPECT_TRUE(evaluator.Result());
87+
88+
auto evaluator2 = CheckConditionEvaluator::FromString("all");
89+
90+
evaluator2.AddResult(false); // Should determine result = false immediately
91+
EXPECT_FALSE(evaluator2.Result());
92+
93+
evaluator2.AddResult(true); // Should have no effect
94+
EXPECT_FALSE(evaluator2.Result());
95+
}

0 commit comments

Comments
 (0)