13 #include <gtest/gtest.h>
19 using std::chrono::milliseconds;
89 ASSERT_EQ(NodeStatus::RUNNING, action.status());
90 ASSERT_EQ(NodeStatus::RUNNING, state);
92 std::this_thread::sleep_for(std::chrono::milliseconds(400));
93 state = root.executeTick();
94 ASSERT_EQ(NodeStatus::FAILURE, state);
95 ASSERT_EQ(NodeStatus::IDLE, action.status());
100 action.setTime(milliseconds(200));
105 ASSERT_EQ(NodeStatus::RUNNING, action.status());
106 ASSERT_EQ(NodeStatus::RUNNING, state);
108 std::this_thread::sleep_for(std::chrono::milliseconds(400));
109 state = root.executeTick();
110 ASSERT_EQ(NodeStatus::IDLE, action.status());
111 ASSERT_EQ(NodeStatus::SUCCESS, state);
116 action.setExpectedResult(NodeStatus::FAILURE);
119 ASSERT_EQ(NodeStatus::FAILURE, root.status());
120 ASSERT_EQ(3, action.tickCount());
122 action.setExpectedResult(NodeStatus::SUCCESS);
126 ASSERT_EQ(NodeStatus::SUCCESS, root.status());
127 ASSERT_EQ(1, action.tickCount());
132 action.setExpectedResult(NodeStatus::SUCCESS);
134 auto res = root.executeTick();
136 while(res == NodeStatus::RUNNING)
138 std::this_thread::sleep_for(std::chrono::milliseconds(20));
139 res = root.executeTick();
142 ASSERT_EQ(NodeStatus::SUCCESS, root.status());
143 ASSERT_EQ(3, action.successCount());
144 ASSERT_EQ(0, action.failureCount());
147 action.setExpectedResult(NodeStatus::FAILURE);
148 action.resetCounters();
150 res = root.executeTick();
151 while(res == NodeStatus::RUNNING)
153 std::this_thread::sleep_for(std::chrono::milliseconds(20));
154 res = root.executeTick();
157 ASSERT_EQ(NodeStatus::FAILURE, root.status());
158 ASSERT_EQ(0, action.successCount());
159 ASSERT_EQ(1, action.failureCount());
164 action.setExpectedResult(NodeStatus::FAILURE);
167 ASSERT_EQ(NodeStatus::FAILURE, root.status());
168 ASSERT_EQ(1, action.tickCount());
172 action.setExpectedResult(NodeStatus::SUCCESS);
175 ASSERT_EQ(NodeStatus::SUCCESS, root.status());
176 ASSERT_EQ(3, action.tickCount());
182 action.setExpectedResult(NodeStatus::FAILURE);
184 auto t1 = std::chrono::high_resolution_clock::now();
186 while(std::chrono::high_resolution_clock::now() < t1 + std::chrono::seconds(2))
189 std::this_thread::sleep_for(std::chrono::microseconds(50));
196 std::array<int, 2> counters;
200 <root BTCPP_format="4" >
203 <RunOnce> <TestA/> </RunOnce>
211 for(
int i = 0; i < 5; i++)
214 ASSERT_EQ(status, NodeStatus::SUCCESS);
217 ASSERT_EQ(counters[0], 1);
219 ASSERT_EQ(counters[1], 5);