From 5bc6a9c9b2b8b08d789821fd6be966b229cac898 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Wed, 15 Jul 2026 10:24:25 +0200 Subject: [PATCH] test(test_node): cover script enum resolution --- tests/gtest_substitution.cpp | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/gtest_substitution.cpp b/tests/gtest_substitution.cpp index 172d9ce64..fda7afdfc 100644 --- a/tests/gtest_substitution.cpp +++ b/tests/gtest_substitution.cpp @@ -30,6 +30,14 @@ const char* json_text = R"( } )"; +const char* single_action_xml = R"( + + + + + + )"; + } // namespace TEST(Substitution, Parser) @@ -58,6 +66,42 @@ TEST(Substitution, Parser) ASSERT_EQ(*std::get_if(&rules.at("actionC")), "NotAConfig"); } +TEST(Substitution, TestNodePostScriptUsesRegisteredEnums) +{ + BehaviorTreeFactory factory; + factory.registerScriptingEnum("EXPECTED_VALUE", 42); + factory.registerBehaviorTreeFromText(single_action_xml); + + TestNodeConfig test_config; + test_config.return_status = NodeStatus::SUCCESS; + test_config.post_script = "observed := EXPECTED_VALUE"; + factory.addSubstitutionRule("action_A", test_config); + + auto blackboard = Blackboard::create(); + auto tree = factory.createTree("MainTree", blackboard); + + ASSERT_EQ(tree.tickWhileRunning(), NodeStatus::SUCCESS); + ASSERT_EQ(blackboard->get("observed"), 42); +} + +TEST(Substitution, TestNodePostScriptReadsStatusNamedBlackboardKey) +{ + BehaviorTreeFactory factory; + factory.registerBehaviorTreeFromText(single_action_xml); + + TestNodeConfig test_config; + test_config.return_status = NodeStatus::SUCCESS; + test_config.post_script = "observed := SUCCESS"; + factory.addSubstitutionRule("action_A", test_config); + + auto blackboard = Blackboard::create(); + blackboard->set("SUCCESS", 99); + auto tree = factory.createTree("MainTree", blackboard); + + ASSERT_EQ(tree.tickWhileRunning(), NodeStatus::SUCCESS); + ASSERT_EQ(blackboard->get("observed"), 99); +} + // Regression test for issue #934: segfault when substituting a SubTree node TEST(Substitution, SubTreeNodeSubstitution) {