gtest_blackboard_precondition.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
2 #include <string>
5 
6 using namespace BT;
7 
8 TEST(BlackboardPreconditionTest, IntEquals)
9 {
10  BehaviorTreeFactory factory;
11 
12  const std::string xml_text = R"(
13 
14  <root main_tree_to_execute = "MainTree" >
15  <BehaviorTree ID="MainTree">
16  <Sequence>
17  <SetBlackboard output_key="a" value="1" />
18  <SetBlackboard output_key="b" value="1" />
19 
20  <BlackboardCheckInt value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
21  <AlwaysFailure />
22  </BlackboardCheckInt>
23  </Sequence>
24  </BehaviorTree>
25  </root>)";
26 
27  auto tree = factory.createTreeFromText(xml_text);
28  const auto status = tree.tickRoot();
29  ASSERT_EQ(status, NodeStatus::FAILURE);
30 }
31 
32 TEST(BlackboardPreconditionTest, IntDoesNotEqual)
33 {
34  BehaviorTreeFactory factory;
35 
36  const std::string xml_text = R"(
37 
38  <root main_tree_to_execute = "MainTree" >
39  <BehaviorTree ID="MainTree">
40  <Sequence>
41  <SetBlackboard output_key="a" value="1" />
42  <SetBlackboard output_key="b" value="2" />
43 
44  <BlackboardCheckInt value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
45  <AlwaysFailure />
46  </BlackboardCheckInt>
47  </Sequence>
48  </BehaviorTree>
49  </root>)";
50 
51  auto tree = factory.createTreeFromText(xml_text);
52  const auto status = tree.tickRoot();
53  ASSERT_EQ(status, NodeStatus::SUCCESS);
54 }
55 
56 TEST(BlackboardPreconditionTest, DoubleEquals)
57 {
58  BehaviorTreeFactory factory;
59 
60  const std::string xml_text = R"(
61 
62  <root main_tree_to_execute = "MainTree" >
63  <BehaviorTree ID="MainTree">
64  <Sequence>
65  <SetBlackboard output_key="a" value="1.1" />
66  <SetBlackboard output_key="b" value="1.1" />
67 
68  <BlackboardCheckDouble value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
69  <AlwaysFailure />
70  </BlackboardCheckDouble>
71  </Sequence>
72  </BehaviorTree>
73  </root>)";
74 
75  auto tree = factory.createTreeFromText(xml_text);
76  const auto status = tree.tickRoot();
77  ASSERT_EQ(status, NodeStatus::FAILURE);
78 }
79 
80 TEST(BlackboardPreconditionTest, DoubleDoesNotEqual)
81 {
82  BehaviorTreeFactory factory;
83 
84  const std::string xml_text = R"(
85 
86  <root main_tree_to_execute = "MainTree" >
87  <BehaviorTree ID="MainTree">
88  <Sequence>
89  <SetBlackboard output_key="a" value="1.1" />
90  <SetBlackboard output_key="b" value="2.1" />
91 
92  <BlackboardCheckDouble value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
93  <AlwaysFailure />
94  </BlackboardCheckDouble>
95  </Sequence>
96  </BehaviorTree>
97  </root>)";
98 
99  auto tree = factory.createTreeFromText(xml_text);
100  const auto status = tree.tickRoot();
101  ASSERT_EQ(status, NodeStatus::SUCCESS);
102 }
103 
104 TEST(BlackboardPreconditionTest, StringEquals)
105 {
106  BehaviorTreeFactory factory;
107 
108  const std::string xml_text = R"(
109 
110  <root main_tree_to_execute = "MainTree" >
111  <BehaviorTree ID="MainTree">
112  <Sequence>
113  <SetBlackboard output_key="a" value="foo" />
114  <SetBlackboard output_key="b" value="foo" />
115 
116  <BlackboardCheckString value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
117  <AlwaysFailure />
118  </BlackboardCheckString>
119  </Sequence>
120  </BehaviorTree>
121  </root>)";
122 
123  auto tree = factory.createTreeFromText(xml_text);
124  const auto status = tree.tickRoot();
125  ASSERT_EQ(status, NodeStatus::FAILURE);
126 }
127 
128 TEST(BlackboardPreconditionTest, StringDoesNotEqual)
129 {
130  BehaviorTreeFactory factory;
131 
132  const std::string xml_text = R"(
133 
134  <root main_tree_to_execute = "MainTree" >
135  <BehaviorTree ID="MainTree">
136  <Sequence>
137  <SetBlackboard output_key="a" value="foo" />
138  <SetBlackboard output_key="b" value="bar" />
139 
140  <BlackboardCheckString value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
141  <AlwaysFailure />
142  </BlackboardCheckString>
143  </Sequence>
144  </BehaviorTree>
145  </root>)";
146 
147  auto tree = factory.createTreeFromText(xml_text);
148  const auto status = tree.tickRoot();
149  ASSERT_EQ(status, NodeStatus::SUCCESS);
150 }
151 
152 TEST(BlackboardPreconditionTest, BoolEquals)
153 {
154  BehaviorTreeFactory factory;
155 
156  const std::string xml_text = R"(
157 
158  <root main_tree_to_execute = "MainTree" >
159  <BehaviorTree ID="MainTree">
160  <Sequence>
161  <SetBlackboard output_key="a" value="true" />
162  <SetBlackboard output_key="b" value="true" />
163 
164  <BlackboardCheckBool value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
165  <AlwaysFailure />
166  </BlackboardCheckBool>
167  </Sequence>
168  </BehaviorTree>
169  </root>)";
170 
171  auto tree = factory.createTreeFromText(xml_text);
172  const auto status = tree.tickRoot();
173  ASSERT_EQ(status, NodeStatus::FAILURE);
174 }
175 
176 TEST(BlackboardPreconditionTest, BoolDoesNotEqual)
177 {
178  BehaviorTreeFactory factory;
179 
180  const std::string xml_text = R"(
181 
182  <root main_tree_to_execute = "MainTree" >
183  <BehaviorTree ID="MainTree">
184  <Sequence>
185  <SetBlackboard output_key="a" value="true" />
186  <SetBlackboard output_key="b" value="false" />
187 
188  <BlackboardCheckBool value_A="{a}" value_B="{b}" return_on_mismatch="SUCCESS">
189  <AlwaysFailure />
190  </BlackboardCheckBool>
191  </Sequence>
192  </BehaviorTree>
193  </root>)";
194 
195  auto tree = factory.createTreeFromText(xml_text);
196  const auto status = tree.tickRoot();
197  ASSERT_EQ(status, NodeStatus::SUCCESS);
198 }
TEST(BlackboardPreconditionTest, IntEquals)
static const char * xml_text
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Definition: bt_factory.h:251
NodeStatus tickRoot()
tickRoot send the tick signal to the root node. It will propagate through the entire tree...
Definition: bt_factory.h:210
Tree createTreeFromText(const std::string &text, Blackboard::Ptr blackboard=Blackboard::create())
Definition: bt_factory.cpp:278


behaviortree_cpp_v3
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Mon Jul 3 2023 02:50:14