1 #include <gtest/gtest.h> 3 #include "../sample_nodes/dummy_nodes.h" 7 TEST(SubTree, SiblingPorts_Issue_72)
12 <root main_tree_to_execute = "MainTree" > 14 <BehaviorTree ID="MainTree"> 16 <SetBlackboard value="hello" output_key="myParam" /> 17 <SubTree ID="mySubtree" param="myParam" /> 18 <SetBlackboard value="world" output_key="myParam" /> 19 <SubTree ID="mySubtree" param="myParam" /> 23 <BehaviorTree ID="mySubtree"> 24 <SaySomething ID="AlwaysSuccess" message="{param}" /> 33 for(
auto& bb: tree.blackboard_stack)
36 std::cout <<
"-----" << std::endl;
42 ASSERT_EQ(tree.blackboard_stack.size(), 3 );
55 auto msg = getInput<std::string>(
"in");
60 setOutput(
"out", msg.value());
66 return{ BT::InputPort<std::string>(
"in"),
67 BT::OutputPort<std::string>(
"out")};
72 TEST(SubTree, GoodRemapping)
76 <root main_tree_to_execute = "MainTree" > 78 <BehaviorTree ID="MainTree"> 80 <SetBlackboard value="hello" output_key="thoughts" /> 81 <SubTree ID="CopySubtree" in_arg="thoughts" out_arg="greetings"/> 82 <SaySomething message="{greetings}" /> 86 <BehaviorTree ID="CopySubtree"> 87 <CopyPorts in="{in_arg}" out="{out_arg}"/> 106 static const char* xml_text_bad_in = R
"( 107 <root main_tree_to_execute = "MainTree" > 109 <BehaviorTree ID="MainTree"> 111 <SetBlackboard value="hello" output_key="thoughts" /> 112 <SubTree ID="CopySubtree" out_arg="greetings"/> 113 <SaySomething message="{greetings}" /> 117 <BehaviorTree ID="CopySubtree"> 118 <CopyPorts in="{in_arg}" out="{out_arg}"/> 123 EXPECT_ANY_THROW( tree_bad_in.tickRoot() ); 125 static const char* xml_text_bad_out = R
"( 126 <root main_tree_to_execute = "MainTree" > 128 <BehaviorTree ID="MainTree"> 130 <SetBlackboard value="hello" output_key="thoughts" /> 131 <SubTree ID="CopySubtree" in_arg="thoughts"/> 132 <SaySomething message="{greetings}" /> 136 <BehaviorTree ID="CopySubtree"> 137 <CopyPorts in="{in_arg}" out="{out_arg}"/> 142 EXPECT_ANY_THROW( tree_bad_out.tickRoot() ); 149 <root main_tree_to_execute = "MainTree" > 151 <BehaviorTree ID="MainTree"> 153 <SetBlackboard value="Hello" output_key="myParam" /> 154 <SubTreePlus ID="mySubtree" param="{myParam}" /> 155 <SubTreePlus ID="mySubtree" param="World" /> 156 <SetBlackboard value="Auto remapped" output_key="param" /> 157 <SubTreePlus ID="mySubtree" __autoremap="1" /> 161 <BehaviorTree ID="mySubtree"> 162 <SaySomething message="{param}" /> 178 <root main_tree_to_execute = "MainTree" > 180 <BehaviorTree ID="MainTree"> 182 <SetBlackboard value="Hello World" output_key="myParam" /> 183 <SetBlackboard value="Auto remapped" output_key="param3" /> 184 <SubTreePlus ID="mySubtree" __autoremap="1" param1="{myParam}" param2="Straight Talking" /> 188 <BehaviorTree ID="mySubtree"> 190 <SaySomething message="{param1}" /> 191 <SaySomething message="{param2}" /> 192 <SaySomething message="{param3}" /> 209 <root main_tree_to_execute = "MainTree" > 211 <BehaviorTree ID="MainTree"> 213 <SetBlackboard value="Hello" output_key="param1" /> 214 <SetBlackboard value="World" output_key="param2" /> 215 <SubTree ID="mySubtree" __shared_blackboard="true"/> 219 <BehaviorTree ID="mySubtree"> 221 <SaySomething message="{param1}" /> 222 <SaySomething message="{param2}" /> 242 auto msg = getInput<std::string>(
"message");
258 <root main_tree_to_execute = "MainTree" > 260 <BehaviorTree ID="MainTree"> 262 <SubTreePlus ID="mySubtree" __autoremap="1"/> 265 <BehaviorTree ID="mySubtree"> 266 <ReadInConstructor message="{message}" /> static Blackboard::Ptr create(Blackboard::Ptr parent={})
void registerNodeType(const std::string &ID)
CopyPorts(const std::string &name, const BT::NodeConfiguration &config)
static BT::PortsList providedPorts()
TEST(SubTree, SiblingPorts_Issue_72)
BT::NodeStatus tick() override
Method to be implemented by the user.
Blackboard::Ptr blackboard
static BT::PortsList providedPorts()
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Tree createTreeFromText(const std::string &text, Blackboard::Ptr blackboard=Blackboard::create())
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
BT::NodeStatus tick() override
Method to be implemented by the user.
std::unordered_map< std::string, PortInfo > PortsList
ReadInConstructor(const std::string &name, const BT::NodeConfiguration &config)
static const char * xml_text