fix: 测试中 vars 赋值移到 ExpressionEngine 构造之后(避免被构造函数覆盖为 0.0)

This commit is contained in:
Huamonarch 2026-05-18 09:53:24 +08:00
parent 8d17e6258e
commit 5f5e64a57f

View File

@ -177,9 +177,9 @@ struct TestEnv {
TEST(logic_alg_trigger_true_produces_alarm) { TEST(logic_alg_trigger_true_produces_alarm) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1"}; std::vector<std::string> tags = {"tag1"};
vars["tag1"] = 1.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 1.0; // 必须在构造后设置(构造函数会用共享内存 0.0 覆盖)
engine.registerExpression("act", "tag1 > 0.5"); engine.registerExpression("act", "tag1 > 0.5");
// trigger 为 true → 应产生报警 // trigger 为 true → 应产生报警
@ -202,10 +202,10 @@ TEST(logic_alg_trigger_false_no_alarm) {
TEST(logic_alg_complex_expression) { TEST(logic_alg_complex_expression) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1", "tag2"}; std::vector<std::string> tags = {"tag1", "tag2"};
vars["tag1"] = 3.0;
vars["tag2"] = 7.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 3.0;
vars["tag2"] = 7.0;
engine.registerExpression("act", "tag1 > 2 && tag2 < 10"); engine.registerExpression("act", "tag1 > 2 && tag2 < 10");
CHECK_EQ(engine.evaluateBool("act"), true); CHECK_EQ(engine.evaluateBool("act"), true);
@ -226,10 +226,10 @@ TEST(logic_alg_and_short_circuit_false) {
TEST(logic_alg_or_expression) { TEST(logic_alg_or_expression) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1", "tag2"}; std::vector<std::string> tags = {"tag1", "tag2"};
vars["tag1"] = 0.0;
vars["tag2"] = 100.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 0.0;
vars["tag2"] = 100.0;
engine.registerExpression("act", "tag1 > 2 || tag2 > 50"); engine.registerExpression("act", "tag1 > 2 || tag2 > 50");
CHECK_EQ(engine.evaluateBool("act"), true); CHECK_EQ(engine.evaluateBool("act"), true);
@ -378,9 +378,9 @@ TEST(bound_alg_filter_expression) {
TEST(bound_alg_filter_boundary) { TEST(bound_alg_filter_boundary) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1"}; std::vector<std::string> tags = {"tag1"};
vars["tag1"] = 200.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 200.0;
engine.registerExpression("feedback", "tag1 >= 200"); engine.registerExpression("feedback", "tag1 >= 200");
// exactly at boundary // exactly at boundary
@ -454,13 +454,13 @@ TEST(bound_hold_long_delay) {
TEST(feedback_full_flow_start_to_done) { TEST(feedback_full_flow_start_to_done) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1"}; std::vector<std::string> tags = {"tag1"};
vars["tag1"] = 1.0;
ExpressionEngine engine(vars, tags);
vars["tag1"] = 1.0; // 必须在构造后设置(构造函数覆盖)
vars["p1"] = 1.0; vars["p1"] = 1.0;
vars["now"] = 0; vars["now"] = 0;
vars["stime"] = 0; vars["stime"] = 0;
vars["time"] = 0; vars["time"] = 0;
ExpressionEngine engine(vars, tags);
engine.registerExpression("act", "tag1 > 0.5"); engine.registerExpression("act", "tag1 > 0.5");
engine.registerExpression("feedback", "tag1 < 0.1"); engine.registerExpression("feedback", "tag1 < 0.1");
engine.registerExpression("result", "1"); engine.registerExpression("result", "1");
@ -568,9 +568,9 @@ TEST(feedback_timeout_scenario) {
TEST(exp_times_occurrence_counting_logic) { TEST(exp_times_occurrence_counting_logic) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1"}; std::vector<std::string> tags = {"tag1"};
vars["tag1"] = 1.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 1.0; // 必须在构造后设置
engine.registerExpression("act", "tag1"); engine.registerExpression("act", "tag1");
int shear_times = 0; int shear_times = 0;
@ -590,9 +590,9 @@ TEST(exp_times_occurrence_counting_logic) {
TEST(exp_times_occurrence_below_threshold) { TEST(exp_times_occurrence_below_threshold) {
std::map<std::string, double> vars; std::map<std::string, double> vars;
std::vector<std::string> tags = {"tag1"}; std::vector<std::string> tags = {"tag1"};
vars["tag1"] = 1.0;
ExpressionEngine engine(vars, tags); ExpressionEngine engine(vars, tags);
vars["tag1"] = 1.0; // 必须在构造后设置
engine.registerExpression("act", "tag1 > 0.5"); engine.registerExpression("act", "tag1 > 0.5");
int shear_times = 0; int shear_times = 0;