13 #include <gtest/gtest.h> 19 using std::chrono::milliseconds;
27 , action(
"action", milliseconds(500) )
77 timeout_root(
"deadline", 9)
78 , retry(
"retry", 1000)
94 ASSERT_EQ(NodeStatus::RUNNING, state);
96 std::this_thread::sleep_for(std::chrono::milliseconds(400));
98 ASSERT_EQ(NodeStatus::FAILURE, state);
110 ASSERT_EQ(NodeStatus::RUNNING, state);
112 std::this_thread::sleep_for(std::chrono::milliseconds(400));
115 ASSERT_EQ(NodeStatus::SUCCESS, state);
123 ASSERT_EQ(NodeStatus::FAILURE,
root.
status());
130 ASSERT_EQ(NodeStatus::SUCCESS,
root.
status());
141 while(res == NodeStatus::RUNNING){
142 std::this_thread::sleep_for(std::chrono::milliseconds(20));
146 ASSERT_EQ(NodeStatus::SUCCESS,
root.
status());
155 while(res == NodeStatus::RUNNING){
156 std::this_thread::sleep_for(std::chrono::milliseconds(20));
160 ASSERT_EQ(NodeStatus::FAILURE,
root.
status());
171 ASSERT_EQ(NodeStatus::FAILURE,
root.
status());
179 ASSERT_EQ(NodeStatus::SUCCESS,
root.
status());
188 auto t1 = std::chrono::high_resolution_clock::now();
190 while( std::chrono::high_resolution_clock::now() < t1 + std::chrono::seconds(2) )
193 std::this_thread::sleep_for( std::chrono::microseconds(50) );
BT::TimeoutNode timeout_root
The TimeoutNode will halt() a running child if the latter has been RUNNING for more than a give time...
TEST_F(DeadlineTest, DeadlineTriggeredTest)
The RepeatNode is used to execute a child several times, as long as it succeed.
BT::SyncActionTest action
The RetryNode is used to execute a child several times if it fails.
BT::SyncActionTest action
void setChild(TreeNode *child)
BT::SyncActionTest action
NodeStatus executeTick() override
The method that should be used to invoke tick() and setStatus();.
BT::AsyncActionTest action
void setTime(BT::Duration time)
BT::AsyncActionTest action
NodeStatus status() const
void setExpectedResult(NodeStatus res)