13 #include <gtest/gtest.h>
19 using std::chrono::milliseconds;
48 action_1(
"action_1", milliseconds(100)),
73 root(
"root_sequence"),
75 action_1(
"action_1", milliseconds(100)),
77 action_3(
"action_3", milliseconds(100))
100 root(
"root_sequence"),
101 action_1(
"action_1", milliseconds(100)),
102 action_2(
"action_2", milliseconds(100)),
153 root(
"root_sequence"),
154 action_1(
"action_1", milliseconds(100)),
155 action_2(
"action_2", milliseconds(100)),
186 root(
"root_parallel", 4),
187 action_1(
"action_1", milliseconds(100)),
189 action_2(
"action_2", milliseconds(100)),
205 std::cout <<
"Ticking the root node !" << std::endl << std::endl;
209 ASSERT_EQ(NodeStatus::RUNNING, action.status());
210 ASSERT_EQ(NodeStatus::RUNNING, state);
215 condition.setExpectedResult(NodeStatus::FAILURE);
218 state = root.executeTick();
219 ASSERT_EQ(NodeStatus::FAILURE, state);
220 ASSERT_EQ(NodeStatus::IDLE, condition.status());
221 ASSERT_EQ(NodeStatus::IDLE, action.status());
228 ASSERT_EQ(NodeStatus::RUNNING, state);
229 ASSERT_EQ(NodeStatus::IDLE, seq_conditions.status());
230 ASSERT_EQ(NodeStatus::IDLE, condition_1.status());
231 ASSERT_EQ(NodeStatus::IDLE, condition_1.status());
232 ASSERT_EQ(NodeStatus::RUNNING, action_1.status());
238 using namespace std::chrono;
239 const auto timeout = system_clock::now() + milliseconds(650);
241 action_1.setTime(milliseconds(300));
242 action_3.setTime(milliseconds(300));
256 std::this_thread::sleep_for(milliseconds(10));
257 state = root.executeTick();
263 ASSERT_EQ(condition.tickCount(), 1);
265 ASSERT_EQ(action_1.tickCount(), 1);
266 ASSERT_EQ(action_2.tickCount(), 1);
267 ASSERT_EQ(action_3.tickCount(), 1);
272 ASSERT_TRUE(system_clock::now() < timeout);
279 state = root.executeTick();
289 std::this_thread::sleep_for(milliseconds(300));
290 state = root.executeTick();
300 state = root.executeTick();
309 state = root.executeTick();
324 state = root.executeTick();
336 std::this_thread::sleep_for(milliseconds(50));
352 state = root.executeTick();
377 state = root.executeTick();