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> 40 using canopen_chain_node::GetObjectRequest;
41 using canopen_chain_node::GetObjectResponse;
42 using canopen_chain_node::SetObjectRequest;
43 using canopen_chain_node::SetObjectResponse;
57 #define DEFAULT_SETUP \ 58 CANOpenChainNodeMock canopen_chain_node;\ 59 ros::NodeHandle nh_adapter("/prbt/braketest_adapter_node");\ 60 prbt_hardware_support::CANOpenBrakeTestAdapter canopen_braketest_adapter(nh_adapter);\ 61 ros::ServiceClient brake_test_srv_client = nh_.serviceClient<BrakeTest>(BRAKE_TEST_SERVICE_NAME);\ 63 ASSERT_TRUE(brake_test_srv_client.exists()) << "Brake test service not available.";\ 161 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
162 EXPECT_FALSE(srv.response.success);
163 EXPECT_EQ(BrakeTestErrorCodes::GET_NODE_NAMES_FAILURE, srv.response.error_code.value);
194 nh_.setParam(param_modified_name, 99);
200 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
201 EXPECT_FALSE(srv.response.success);
202 EXPECT_EQ(BrakeTestErrorCodes::GET_NODE_NAMES_FAILURE, srv.response.error_code.value);
240 canopen_chain_node.expectAnything();
242 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
246 .WillRepeatedly(Return(
false));
248 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
256 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
257 EXPECT_FALSE(srv.response.success);
258 EXPECT_EQ(BrakeTestErrorCodes::GET_DURATION_FAILURE, srv.response.error_code.value);
263 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&canopen_chain_node));
292 GetObjectResponse duration_resp;
293 duration_resp.success =
false;
303 canopen_chain_node.expectAnything();
305 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
309 .WillRepeatedly(DoAll(SetArgReferee<1>(duration_resp), Return(
true)));
311 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
319 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
320 EXPECT_FALSE(srv.response.success);
321 EXPECT_EQ(BrakeTestErrorCodes::GET_DURATION_FAILURE, srv.response.error_code.value);
326 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&canopen_chain_node));
357 canopen_chain_node.setDefaultActions();
363 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
364 EXPECT_TRUE(srv.response.success);
400 canopen_chain_node.expectAnything();
402 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
407 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
409 .WillOnce(Return(
false));
415 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
416 EXPECT_FALSE(srv.response.success);
417 EXPECT_EQ(BrakeTestErrorCodes::START_BRAKE_TEST_FAILURE, srv.response.error_code.value);
422 Mock::VerifyAndClearExpectations(&canopen_chain_node);
451 SetObjectResponse start_resp;
452 start_resp.success =
false;
462 canopen_chain_node.expectAnything();
464 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
469 EXPECT_CALL(canopen_chain_node, set_obj(AllOf(Field(&SetObjectRequest::node, node),
471 .WillOnce(DoAll(SetArgReferee<1>(start_resp), Return(
true)));
477 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
478 EXPECT_FALSE(srv.response.success);
479 EXPECT_EQ(BrakeTestErrorCodes::START_BRAKE_TEST_FAILURE, srv.response.error_code.value);
484 Mock::VerifyAndClearExpectations(&canopen_chain_node);
519 canopen_chain_node.expectAnything();
521 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
525 .WillRepeatedly(Return(
false));
531 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
532 EXPECT_FALSE(srv.response.success);
533 EXPECT_EQ(BrakeTestErrorCodes::GET_STATUS_FAILURE, srv.response.error_code.value);
538 Mock::VerifyAndClearExpectations(&canopen_chain_node);
565 GetObjectResponse status_resp;
566 status_resp.success =
false;
576 canopen_chain_node.expectAnything();
578 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
582 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
588 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
589 EXPECT_FALSE(srv.response.success);
590 EXPECT_EQ(BrakeTestErrorCodes::GET_STATUS_FAILURE, srv.response.error_code.value);
595 Mock::VerifyAndClearExpectations(&canopen_chain_node);
621 GetObjectResponse status_resp;
622 status_resp.success =
true;
623 status_resp.value =
"\0";
633 canopen_chain_node.expectAnything();
635 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
639 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
645 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
646 EXPECT_FALSE(srv.response.success);
647 EXPECT_EQ(BrakeTestErrorCodes::STATUS_UNKNOWN, srv.response.error_code.value);
652 Mock::VerifyAndClearExpectations(&canopen_chain_node);
678 GetObjectResponse status_resp;
679 status_resp.success =
true;
680 status_resp.value =
"\x01";
690 canopen_chain_node.expectAnything();
692 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
696 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
702 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
703 EXPECT_FALSE(srv.response.success);
704 EXPECT_EQ(BrakeTestErrorCodes::STATUS_PERFORMING, srv.response.error_code.value);
709 Mock::VerifyAndClearExpectations(&canopen_chain_node);
735 GetObjectResponse status_resp;
736 status_resp.success =
true;
737 status_resp.value =
"\x03";
747 canopen_chain_node.expectAnything();
749 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
753 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
759 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
760 EXPECT_FALSE(srv.response.success);
761 EXPECT_EQ(BrakeTestErrorCodes::STATUS_NO_SUCCESS, srv.response.error_code.value);
766 Mock::VerifyAndClearExpectations(&canopen_chain_node);
793 GetObjectResponse status_resp;
794 status_resp.success =
true;
795 status_resp.value =
"\x04";
805 canopen_chain_node.expectAnything();
807 EXPECT_CALL(canopen_chain_node, get_obj(AllOf(Field(&GetObjectRequest::node, node),
811 .WillRepeatedly(DoAll(SetArgReferee<1>(status_resp), Return(
true)));
817 EXPECT_TRUE(brake_test_srv_client.call(srv)) <<
"Failed to call brake test service.";
818 EXPECT_FALSE(srv.response.success);
819 EXPECT_EQ(BrakeTestErrorCodes::STATUS_NO_CONTROL, srv.response.error_code.value);
824 Mock::VerifyAndClearExpectations(&canopen_chain_node);
830 int main(
int argc,
char *argv[])
832 ros::init(argc, argv,
"unittest_brake_test_executor");
838 testing::InitGoogleMock(&argc, argv);
839 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
static constexpr int NODE_COUNT
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)