20 #include <gmock/gmock.h> 21 #include <gtest/gtest.h> 25 #include <prbt_hardware_support/OperationModes.h> 35 using ::testing::Return;
36 using ::testing::SetArgReferee;
37 using ::testing::DoAll;
44 void SetUp()
override;
45 void TearDown()
override;
47 MOCK_METHOD1(setSpeedLimit,
bool(
const double &));
50 double t1_limit_{ 0.1 };
51 double auto_limit_{ 0.2 };
52 std::unique_ptr<OperationModeSetupExecutor>
executor_;
59 OperationModes op_mode;
61 op_mode.value = OperationModes::UNKNOWN;
63 ON_CALL(*
this, setSpeedLimit(_)).WillByDefault(Return(
true));
68 std::bind(&OperationModeSetupExecutorTest::setSpeedLimit,
this, std::placeholders::_1)));
94 OperationModes op_mode;
96 op_mode.value = OperationModes::T1;
98 EXPECT_CALL(*
this, setSpeedLimit(t1_limit_)).WillOnce(Return(
true));
100 executor_->updateOperationMode(op_mode);
105 OperationModes op_mode2;
107 op_mode2.value = OperationModes::AUTO;
109 EXPECT_CALL(*
this, setSpeedLimit(auto_limit_)).WillOnce(Return(
true));
111 executor_->updateOperationMode(op_mode2);
132 OperationModes op_mode;
134 op_mode.value = OperationModes::T1;
136 EXPECT_CALL(*
this, setSpeedLimit(t1_limit_)).WillOnce(Return(
true));
138 executor_->updateOperationMode(op_mode);
143 OperationModes op_mode2;
145 op_mode2.value = op_mode.value;
147 EXPECT_CALL(*
this, setSpeedLimit(t1_limit_)).WillRepeatedly(Return(
true));
149 executor_->updateOperationMode(op_mode2);
170 OperationModes op_mode;
172 op_mode.value = OperationModes::T1;
174 EXPECT_CALL(*
this, setSpeedLimit(t1_limit_)).WillOnce(Return(
true));
176 executor_->updateOperationMode(op_mode);
181 OperationModes op_mode2;
182 op_mode2.time_stamp = op_mode.time_stamp;
183 op_mode2.value = OperationModes::AUTO;
185 EXPECT_CALL(*
this, setSpeedLimit(auto_limit_)).Times(0);
187 executor_->updateOperationMode(op_mode2);
206 OperationModes op_mode;
208 op_mode.value = OperationModes::UNKNOWN;
210 EXPECT_CALL(*
this, setSpeedLimit(Le(0.0))).WillOnce(Return(
true));
212 executor_->updateOperationMode(op_mode);
218 MOCK_METHOD1(
call,
bool(SetSpeedLimit& srv));
219 MOCK_METHOD0(getService, std::string());
222 MATCHER_P(IsCorrectSpeedLimitSet, speed_limit,
"") {
return arg.request.speed_limit == speed_limit; }
230 const double exp_limit {7.7};
231 SetSpeedLimit exp_srv;
232 exp_srv.request.speed_limit = exp_limit;
235 EXPECT_CALL(mock, getService()).WillRepeatedly(Return(
"TestServiceName"));
236 EXPECT_CALL(mock,
call(IsCorrectSpeedLimitSet(exp_limit))).Times(1).WillOnce(Return(
true));
238 EXPECT_TRUE(setSpeedLimitSrv<SetSpeedLimitServiceMock>(mock, exp_limit));
247 EXPECT_CALL(mock, getService()).WillRepeatedly(Return(
"TestServiceName"));
248 EXPECT_CALL(mock,
call(_)).Times(1).WillOnce(Return(
false));
250 const double exp_limit {7.7};
251 EXPECT_FALSE(setSpeedLimitSrv<SetSpeedLimitServiceMock>(mock, exp_limit));
255 public ::testing::WithParamInterface<std::pair<OperationModes::_value_type, double>>
259 return GetParam().first;
264 return GetParam().second;
269 typedef ::testing::NiceMock<OperationModeSetupExecutorTestSpeedOverride>
283 OperationModes op_mode;
285 op_mode.value = GetParam().first;
287 executor_->updateOperationMode(op_mode);
289 auto req = GetSpeedOverrideRequest();
290 auto res = GetSpeedOverrideResponse();
291 executor_->getSpeedOverride(req, res);
292 EXPECT_EQ(res.speed_override, GetParam().second);
296 SpeedOverrideModeTests,
299 std::pair<OperationModes::_value_type, double>(OperationModes::UNKNOWN, 0.0),
300 std::pair<OperationModes::_value_type, double>(OperationModes::T1, 0.1),
301 std::pair<OperationModes::_value_type, double>(OperationModes::AUTO, 1.0)
307 int main(
int argc,
char *argv[])
309 testing::InitGoogleTest(&argc, argv);
310 return RUN_ALL_TESTS();
double getSpeedOverride()
bool call(const std::string &service_name, MReq &req, MRes &res)
OperationModes::_value_type getMode()
Sets the allowed speed limit for each frame based on the current operation mode.
std::unique_ptr< OperationModeSetupExecutor > executor_
MATCHER_P(IsCorrectSpeedLimitSet, speed_limit,"")
INSTANTIATE_TEST_CASE_P(SpeedOverrideModeTests, OperationModeSetupExecutorTestSpeedOverrideNice,::testing::Values(std::pair< OperationModes::_value_type, double >(OperationModes::UNKNOWN, 0.0), std::pair< OperationModes::_value_type, double >(OperationModes::T1, 0.1), std::pair< OperationModes::_value_type, double >(OperationModes::AUTO, 1.0)))
int main(int argc, char *argv[])
TEST_P(OperationModeSetupExecutorTestSpeedOverrideNice, testSpeedOverride)
TEST_F(OperationModeSetupExecutorTest, testUpdateOperationMode)
::testing::NiceMock< OperationModeSetupExecutorTestSpeedOverride > OperationModeSetupExecutorTestSpeedOverrideNice