21 #include <gtest/gtest.h> 22 #include <gmock/gmock.h> 25 #include <canopen_chain_node/GetObject.h> 26 #include <canopen_chain_node/SetObject.h> 30 #include <prbt_hardware_support/BrakeTest.h> 38 using canopen_chain_node::GetObjectRequest;
39 using canopen_chain_node::GetObjectResponse;
40 using canopen_chain_node::SetObjectRequest;
41 using canopen_chain_node::SetObjectResponse;
54 #define DEFAULT_SETUP \ 55 CANOpenChainNodeMock canopen_chain_node; \ 56 ros::NodeHandle nh_adapter("/prbt/braketest_adapter_node"); \ 57 prbt_hardware_support::CANOpenBrakeTestAdapter canopen_braketest_adapter(nh_adapter); \ 58 ros::ServiceClient brake_test_srv_client = nh_.serviceClient<BrakeTest>(BRAKE_TEST_SERVICE_NAME); \ 60 ASSERT_TRUE(brake_test_srv_client.exists()) << "Brake test service not available."; 155 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
156 EXPECT_FALSE(srv.response.success);
157 EXPECT_EQ(BrakeTestErrorCodes::GET_NODE_NAMES_FAILURE, srv.response.error_code.value);
188 nh_.setParam(param_modified_name, 99);
194 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
195 EXPECT_FALSE(srv.response.success);
196 EXPECT_EQ(BrakeTestErrorCodes::GET_NODE_NAMES_FAILURE, srv.response.error_code.value);
234 canopen_chain_node.expectAnything();
236 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
240 .WillRepeatedly(Return(
false));
242 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
251 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
252 EXPECT_FALSE(srv.response.success);
253 EXPECT_EQ(BrakeTestErrorCodes::GET_DURATION_FAILURE, srv.response.error_code.value);
258 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&canopen_chain_node));
287 GetObjectResponse duration_resp;
288 duration_resp.success =
false;
298 canopen_chain_node.expectAnything();
300 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
304 .WillRepeatedly(DoAll(SetArgReferee<1>(duration_resp), Return(
true)));
306 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
315 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
316 EXPECT_FALSE(srv.response.success);
317 EXPECT_EQ(BrakeTestErrorCodes::GET_DURATION_FAILURE, srv.response.error_code.value);
322 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&canopen_chain_node));
352 canopen_chain_node.setDefaultActions();
358 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
359 EXPECT_TRUE(srv.response.success);
395 canopen_chain_node.expectAnything();
397 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
402 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
405 .WillOnce(Return(
false));
411 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
412 EXPECT_FALSE(srv.response.success);
413 EXPECT_EQ(BrakeTestErrorCodes::START_BRAKE_TEST_FAILURE, srv.response.error_code.value);
418 Mock::VerifyAndClearExpectations(&canopen_chain_node);
447 SetObjectResponse start_resp;
448 start_resp.success =
false;
458 canopen_chain_node.expectAnything();
460 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
465 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
468 .WillOnce(DoAll(SetArgReferee<1>(start_resp), Return(
true)));
474 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
475 EXPECT_FALSE(srv.response.success);
476 EXPECT_EQ(BrakeTestErrorCodes::START_BRAKE_TEST_FAILURE, srv.response.error_code.value);
481 Mock::VerifyAndClearExpectations(&canopen_chain_node);
516 canopen_chain_node.expectAnything();
518 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
522 .WillRepeatedly(Return(
false));
528 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
529 EXPECT_FALSE(srv.response.success);
530 EXPECT_EQ(BrakeTestErrorCodes::GET_STATUS_FAILURE, srv.response.error_code.value);
535 Mock::VerifyAndClearExpectations(&canopen_chain_node);
562 GetObjectResponse status_resp;
563 status_resp.success =
false;
573 canopen_chain_node.expectAnything();
575 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
579 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
585 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
586 EXPECT_FALSE(srv.response.success);
587 EXPECT_EQ(BrakeTestErrorCodes::GET_STATUS_FAILURE, srv.response.error_code.value);
592 Mock::VerifyAndClearExpectations(&canopen_chain_node);
618 GetObjectResponse status_resp;
619 status_resp.success =
true;
620 status_resp.value =
"\0";
630 canopen_chain_node.expectAnything();
632 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
636 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
642 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
643 EXPECT_FALSE(srv.response.success);
644 EXPECT_EQ(BrakeTestErrorCodes::STATUS_UNKNOWN, srv.response.error_code.value);
649 Mock::VerifyAndClearExpectations(&canopen_chain_node);
675 GetObjectResponse status_resp;
676 status_resp.success =
true;
677 status_resp.value =
"\x01";
687 canopen_chain_node.expectAnything();
689 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
693 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
699 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
700 EXPECT_FALSE(srv.response.success);
701 EXPECT_EQ(BrakeTestErrorCodes::STATUS_PERFORMING, srv.response.error_code.value);
706 Mock::VerifyAndClearExpectations(&canopen_chain_node);
732 GetObjectResponse status_resp;
733 status_resp.success =
true;
734 status_resp.value =
"\x03";
744 canopen_chain_node.expectAnything();
746 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
750 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
756 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
757 EXPECT_FALSE(srv.response.success);
758 EXPECT_EQ(BrakeTestErrorCodes::STATUS_NO_SUCCESS, srv.response.error_code.value);
763 Mock::VerifyAndClearExpectations(&canopen_chain_node);
790 GetObjectResponse status_resp;
791 status_resp.success =
true;
792 status_resp.value =
"\x04";
802 canopen_chain_node.expectAnything();
804 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
808 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
814 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
815 EXPECT_FALSE(srv.response.success);
816 EXPECT_EQ(BrakeTestErrorCodes::STATUS_NO_CONTROL, srv.response.error_code.value);
821 Mock::VerifyAndClearExpectations(&canopen_chain_node);
827 int main(
int argc,
char* argv[])
829 ros::init(argc, argv,
"unittest_brake_test_executor");
835 testing::InitGoogleMock(&argc, argv);
836 return RUN_ALL_TESTS();
static const std::string START_BRAKE_TEST_OBJECT_INDEX
static const std::string BRAKETEST_REQUIRED_NAME
static const std::string NODE_NAMES_PREFIX
static const std::vector< size_t > NODE_TEST_SET
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void shutdownSetService()
Un-advertise the set service.
void shutdownGetService()
Un-advertise the get service.
int main(int argc, char *argv[])
static const std::string BRAKE_TEST_STATUS_OBJECT_INDEX
static const std::string BRAKE_TEST_SERVICE_NAME
Executes the brake test for all joints. A brake test is triggered via service call.
static const std::string BRAKE_TEST_DURATION_OBJECT_INDEX
Exception thrown by the CANOpenBrakeTestAdapter.
static const std::string NODE_NAMES_PARAMETER_NAME
TEST_F(CanOpenBraketestAdapterTest, testCANOpenBrakeTestAdapterExceptionDtor)