Add bad arguments tests for coverage (#698)
* Add test context bad_fini * Add bad name service tests * Add default case validation result * Add bad_arg tests rcl_lexer_lookahead2_accept * Add bad_arg test rcl_trigger_guard_condition * Add bad arguments events test * Add message_lost event test * Disable failing test * Address peer review comments * Remove failing test * Separate non related API tests * Add comments to explain error causes * Use test fixture without params * Replace nullptr with NULL Signed-off-by: Jorge Perez <jjperez@ekumenlabs.com>
This commit is contained in:
parent
7cc97f48f3
commit
3d6c2e90ba
6 changed files with 131 additions and 0 deletions
|
@ -128,4 +128,26 @@ TEST_F(CLASSNAME(TestContextFixture, RMW_IMPLEMENTATION), nominal) {
|
|||
TEST_F(CLASSNAME(TestContextFixture, RMW_IMPLEMENTATION), bad_fini) {
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_context_fini(nullptr));
|
||||
rcl_reset_error();
|
||||
|
||||
rcl_init_options_t init_options = rcl_get_zero_initialized_init_options();
|
||||
rcl_ret_t ret = rcl_init_options_init(&init_options, rcl_get_default_allocator());
|
||||
ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
|
||||
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT(
|
||||
{
|
||||
EXPECT_EQ(RCL_RET_OK, rcl_init_options_fini(&init_options)) << rcl_get_error_string().str;
|
||||
});
|
||||
|
||||
rcl_context_t context = rcl_get_zero_initialized_context();
|
||||
ret = rcl_init(0, nullptr, &init_options, &context);
|
||||
EXPECT_EQ(RCL_RET_OK, ret);
|
||||
|
||||
ret = rcl_context_fini(&context);
|
||||
EXPECT_EQ(ret, RCL_RET_INVALID_ARGUMENT);
|
||||
rcl_reset_error();
|
||||
|
||||
ret = rcl_shutdown(&context);
|
||||
EXPECT_EQ(ret, RCL_RET_OK);
|
||||
|
||||
ret = rcl_context_fini(&context);
|
||||
EXPECT_EQ(ret, RCL_RET_OK);
|
||||
}
|
||||
|
|
|
@ -696,6 +696,40 @@ TEST_P(TestEventFixture, test_pubsub_incompatible_qos)
|
|||
tear_down_publisher_subscriber();
|
||||
}
|
||||
|
||||
/*
|
||||
* Passing bad param subscriber/publisher event ini
|
||||
*/
|
||||
TEST_F(TestEventFixture, test_bad_event_ini)
|
||||
{
|
||||
setup_publisher_subscriber(default_qos_profile, default_qos_profile);
|
||||
const rcl_subscription_event_type_t unknown_sub_type = (rcl_subscription_event_type_t) 5432;
|
||||
const rcl_publisher_event_type_t unknown_pub_type = (rcl_publisher_event_type_t) 5432;
|
||||
|
||||
publisher_event = rcl_get_zero_initialized_event();
|
||||
rcl_ret_t ret = rcl_publisher_event_init(
|
||||
&publisher_event,
|
||||
&publisher,
|
||||
unknown_pub_type);
|
||||
EXPECT_EQ(ret, RCL_RET_INVALID_ARGUMENT);
|
||||
|
||||
subscription_event = rcl_get_zero_initialized_event();
|
||||
ret = rcl_subscription_event_init(
|
||||
&subscription_event,
|
||||
&subscription,
|
||||
unknown_sub_type);
|
||||
EXPECT_EQ(ret, RCL_RET_INVALID_ARGUMENT);
|
||||
|
||||
tear_down_publisher_subscriber();
|
||||
}
|
||||
|
||||
/*
|
||||
* Passing bad argument to get_rmw_handle
|
||||
*/
|
||||
TEST_F(TestEventFixture, test_bad_get_handle)
|
||||
{
|
||||
EXPECT_EQ(NULL, rcl_event_get_rmw_handle(NULL));
|
||||
}
|
||||
|
||||
static
|
||||
std::array<TestIncompatibleQosEventParams, 5>
|
||||
get_test_pubsub_incompatible_qos_inputs()
|
||||
|
|
|
@ -216,3 +216,14 @@ TEST_F(
|
|||
EXPECT_EQ(RCL_RET_OK, ret);
|
||||
rcl_reset_error();
|
||||
}
|
||||
|
||||
/* Tests trigger_guard_condition with bad arguments
|
||||
*/
|
||||
TEST_F(
|
||||
CLASSNAME(TestGuardConditionFixture, RMW_IMPLEMENTATION), test_rcl_guard_condition_bad_arg) {
|
||||
rcl_guard_condition_t zero_guard_condition = rcl_get_zero_initialized_guard_condition();
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_trigger_guard_condition(nullptr));
|
||||
rcl_reset_error();
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_trigger_guard_condition(&zero_guard_condition));
|
||||
rcl_reset_error();
|
||||
}
|
||||
|
|
|
@ -195,6 +195,47 @@ TEST_F(CLASSNAME(TestLexerLookaheadFixture, RMW_IMPLEMENTATION), test_accept)
|
|||
EXPECT_EQ(RCL_LEXEME_EOF, lexeme);
|
||||
}
|
||||
|
||||
TEST_F(CLASSNAME(TestLexerLookaheadFixture, RMW_IMPLEMENTATION), test_accept_bad_arg)
|
||||
{
|
||||
rcl_lexer_lookahead2_t buffer;
|
||||
rcl_lexer_lookahead2_t buffer_not_ini = rcl_get_zero_initialized_lexer_lookahead2();
|
||||
SCOPE_LOOKAHEAD2(buffer, "foobar/");
|
||||
|
||||
rcl_lexeme_t lexeme = RCL_LEXEME_NONE;
|
||||
const char * lexeme_text;
|
||||
size_t lexeme_text_length = 0;
|
||||
|
||||
// Can't accept without peek first
|
||||
rcl_ret_t ret = rcl_lexer_lookahead2_accept(&buffer, &lexeme_text, &lexeme_text_length);
|
||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
|
||||
// Expected usage
|
||||
ret = rcl_lexer_lookahead2_peek(&buffer, &lexeme);
|
||||
EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
|
||||
EXPECT_EQ(RCL_LEXEME_TOKEN, lexeme);
|
||||
|
||||
// Invalid nullptr parameter
|
||||
ret = rcl_lexer_lookahead2_accept(nullptr, &lexeme_text, &lexeme_text_length);
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
|
||||
// Invalid not ini parameter
|
||||
ret = rcl_lexer_lookahead2_accept(&buffer_not_ini, &lexeme_text, &lexeme_text_length);
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
|
||||
// Invalid nullptr as lexeme_text_length
|
||||
ret = rcl_lexer_lookahead2_accept(&buffer, &lexeme_text, nullptr);
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
|
||||
// Invalid nullptr as lexeme_text
|
||||
ret = rcl_lexer_lookahead2_accept(&buffer, nullptr, &lexeme_text_length);
|
||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
}
|
||||
|
||||
TEST_F(CLASSNAME(TestLexerLookaheadFixture, RMW_IMPLEMENTATION), test_expect)
|
||||
{
|
||||
rcl_ret_t ret;
|
||||
|
|
|
@ -402,3 +402,21 @@ TEST_F(CLASSNAME(TestServiceFixture, RMW_IMPLEMENTATION), test_bad_arguments) {
|
|||
&service, this->node_ptr, ts,
|
||||
topic, &service_options_bad_alloc)) << rcl_get_error_string().str;
|
||||
}
|
||||
|
||||
/* Name failed tests
|
||||
*/
|
||||
TEST_F(CLASSNAME(TestServiceFixture, RMW_IMPLEMENTATION), test_service_fail_name) {
|
||||
const rosidl_service_type_support_t * ts = ROSIDL_GET_SRV_TYPE_SUPPORT(
|
||||
test_msgs, srv, BasicTypes);
|
||||
const char * topic = "white space";
|
||||
rcl_service_t service = rcl_get_zero_initialized_service();
|
||||
rcl_service_options_t service_options = rcl_service_get_default_options();
|
||||
rcl_ret_t ret = rcl_service_init(&service, this->node_ptr, ts, topic, &service_options);
|
||||
EXPECT_EQ(RCL_RET_SERVICE_NAME_INVALID, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
|
||||
const char * topic2 = "{invalidbecausecurlybraces}";
|
||||
ret = rcl_service_init(&service, this->node_ptr, ts, topic2, &service_options);
|
||||
EXPECT_EQ(RCL_RET_SERVICE_NAME_INVALID, ret) << rcl_get_error_string().str;
|
||||
rcl_reset_error();
|
||||
}
|
||||
|
|
|
@ -120,6 +120,11 @@ TEST(test_validate_topic_name, various_valid_topics) {
|
|||
EXPECT_EQ(42u, invalid_index);
|
||||
EXPECT_STREQ(nullptr, rcl_topic_name_validation_result_string(validation_result));
|
||||
}
|
||||
|
||||
int not_valid_validation_result = 5600;
|
||||
EXPECT_STREQ(
|
||||
"unknown result code for rcl topic name validation",
|
||||
rcl_topic_name_validation_result_string(not_valid_validation_result));
|
||||
}
|
||||
|
||||
TEST(test_validate_topic_name, various_invalid_topics) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue