gtest_substitution.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
3 
4 using namespace BT;
5 
6 static const char* json_text = R"(
7 {
8  "TestNodeConfigs": {
9  "TestA": {
10  "async_delay": 2000,
11  "return_status": "SUCCESS",
12  "post_script": "msg ='message SUBSTITUED'"
13  },
14  "TestB": {
15  "return_status": "FAILURE"
16  }
17  },
18 
19  "SubstitutionRules": {
20  "actionA": "TestA",
21  "actionB": "TestB",
22  "actionC": "NotAConfig"
23  }
24 }
25  )";
26 
27 TEST(Substitution, Parser)
28 {
29  BehaviorTreeFactory factory;
30 
32 
33  const auto& rules = factory.substitutionRules();
34 
35  ASSERT_EQ(rules.size(), 3);
36  ASSERT_EQ(rules.count("actionA"), 1);
37  ASSERT_EQ(rules.count("actionB"), 1);
38  ASSERT_EQ(rules.count("actionC"), 1);
39 
40  auto configA = std::get_if<TestNodeConfig>(&rules.at("actionA"));
41  ASSERT_EQ(configA->return_status, NodeStatus::SUCCESS);
42  ASSERT_EQ(configA->async_delay, std::chrono::milliseconds(2000));
43  ASSERT_EQ(configA->post_script, "msg ='message SUBSTITUED'");
44 
45  auto configB = std::get_if<TestNodeConfig>(&rules.at("actionB"));
46  ASSERT_EQ(configB->return_status, NodeStatus::FAILURE);
47  ASSERT_EQ(configB->async_delay, std::chrono::milliseconds(0));
48  ASSERT_TRUE(configB->post_script.empty());
49 
50  ASSERT_EQ(*std::get_if<std::string>(&rules.at("actionC")), "NotAConfig");
51 }
BT
Definition: ex01_wrap_legacy.cpp:29
BT::BehaviorTreeFactory::substitutionRules
const std::unordered_map< std::string, SubstitutionRule > & substitutionRules() const
substitutionRules return the current substitution rules.
Definition: bt_factory.cpp:529
BT::BehaviorTreeFactory::loadSubstitutionRuleFromJSON
void loadSubstitutionRuleFromJSON(const std::string &json_text)
loadSubstitutionRuleFromJSON will parse a JSON file to create a set of substitution rules....
Definition: bt_factory.cpp:480
bt_factory.h
TEST
TEST(Substitution, Parser)
Definition: gtest_substitution.cpp:27
json_text
static const char * json_text
Definition: gtest_substitution.cpp:6
BT::NodeStatus::FAILURE
@ FAILURE
BT::BehaviorTreeFactory
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Definition: bt_factory.h:205
BT::NodeStatus::SUCCESS
@ SUCCESS
BT::Parser
The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and inst...
Definition: bt_parser.h:26


behaviortree_cpp_v4
Author(s): Davide Faconti
autogenerated on Fri Jun 28 2024 02:20:07