-
Notifications
You must be signed in to change notification settings - Fork 181
Add cov tests 95% #744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add cov tests 95% #744
Changes from 18 commits
f391200
e60f44f
4d11ecf
226f21a
310b9f5
4d63f1c
7171d71
85f95a0
8fd4d0e
34c3ce8
34d140e
98cdcfc
a6f8e99
19a3842
ffd0890
19952df
6ad074c
efb7585
bbe6241
ecedb50
402b106
4a7573a
c4c9fb9
0df49b9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,6 +26,7 @@ | |
|
|
||
| #include "./allocator_testing_utils.h" | ||
| #include "../src/rcl/init_options_impl.h" | ||
| #include "../mocking_utils/patch.hpp" | ||
|
|
||
| #ifdef RMW_IMPLEMENTATION | ||
| # define CLASSNAME_(NAME, SUFFIX) NAME ## __ ## SUFFIX | ||
|
|
@@ -104,16 +105,34 @@ struct FakeTestArgv | |
| */ | ||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_init) { | ||
| 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()); | ||
|
|
||
| // fini a not empty options | ||
| rcl_ret_t ret = rcl_init_options_fini(&init_options); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
|
|
||
| // Expected usage | ||
| 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; | ||
| }); | ||
|
|
||
| // Already init | ||
| ret = rcl_init_options_init(&init_options, rcl_get_default_allocator()); | ||
| EXPECT_EQ(RCL_RET_ALREADY_INIT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
|
|
||
| // nullptr | ||
| ret = rcl_init_options_init(nullptr, rcl_get_default_allocator()); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
|
|
||
| // nullptr | ||
| ret = rcl_init_options_fini(nullptr); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
| } | ||
|
|
||
| /* Tests calling rcl_init() with invalid arguments fails. | ||
|
|
@@ -364,6 +383,7 @@ TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_get_instance_id) | |
|
|
||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_access) { | ||
| rcl_init_options_t init_options = rcl_get_zero_initialized_init_options(); | ||
| rcl_init_options_t not_ini_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( | ||
|
|
@@ -375,14 +395,21 @@ TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_acce | |
| ASSERT_NE(nullptr, options); | ||
| EXPECT_EQ(0u, options->instance_id); | ||
| EXPECT_EQ(nullptr, options->impl); | ||
| EXPECT_EQ(NULL, rcl_init_options_get_rmw_init_options(nullptr)); | ||
| EXPECT_EQ(NULL, rcl_init_options_get_rmw_init_options(¬_ini_init_options)); | ||
|
|
||
| const rcl_allocator_t * options_allocator = rcl_init_options_get_allocator(&init_options); | ||
| EXPECT_TRUE(rcutils_allocator_is_valid(options_allocator)); | ||
| EXPECT_EQ(NULL, rcl_init_options_get_allocator(nullptr)); | ||
| EXPECT_EQ(NULL, rcl_init_options_get_allocator(¬_ini_init_options)); | ||
|
|
||
| size_t domain_id; | ||
| ret = rcl_init_options_get_domain_id(NULL, &domain_id); | ||
| ASSERT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
| ret = rcl_init_options_get_domain_id(¬_ini_init_options, &domain_id); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
| ret = rcl_init_options_get_domain_id(&init_options, NULL); | ||
| ASSERT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
|
|
@@ -392,6 +419,9 @@ TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_acce | |
| ret = rcl_init_options_set_domain_id(NULL, domain_id); | ||
| ASSERT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
| ret = rcl_init_options_set_domain_id(¬_ini_init_options, domain_id); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, ret) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
|
|
||
| ret = rcl_init_options_get_domain_id(&init_options, &domain_id); | ||
| ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; | ||
|
|
@@ -403,10 +433,86 @@ TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_acce | |
| EXPECT_EQ(0U, domain_id); | ||
|
|
||
| rcl_init_options_t init_options_dst = rcl_get_zero_initialized_init_options(); | ||
|
|
||
| // nullptr copy cases | ||
| EXPECT_EQ( | ||
| RCL_RET_INVALID_ARGUMENT, rcl_init_options_copy(nullptr, &init_options_dst)); | ||
| EXPECT_EQ( | ||
| RCL_RET_INVALID_ARGUMENT, rcl_init_options_copy(&init_options, nullptr)); | ||
|
|
||
| // Expected usage copy | ||
| ASSERT_EQ(RCL_RET_OK, rcl_init_options_copy(&init_options, &init_options_dst)); | ||
| ret = rcl_init_options_get_domain_id(&init_options_dst, &domain_id); | ||
| ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; | ||
| EXPECT_EQ(0U, domain_id); | ||
| EXPECT_EQ(RCL_RET_ALREADY_INIT, rcl_init_options_copy(&init_options, &init_options_dst)); | ||
| EXPECT_EQ(RCL_RET_OK, rcl_init_options_fini(&init_options_dst)); | ||
| } | ||
|
|
||
| MOCKING_UTILS_BOOL_OPERATOR_RETURNS_FALSE(rcutils_allocator_t, ==) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @Blast545 nit: same as below and other PRs, an explanatory comment is nice. |
||
| MOCKING_UTILS_BOOL_OPERATOR_RETURNS_FALSE(rcutils_allocator_t, <) | ||
| MOCKING_UTILS_BOOL_OPERATOR_RETURNS_FALSE(rcutils_allocator_t, >) | ||
| MOCKING_UTILS_BOOL_OPERATOR_RETURNS_FALSE(rcutils_allocator_t, !=) | ||
|
|
||
| // Tests rcl_init_options_init() mocked to fail | ||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_mocked_rcl_init_options_ini) { | ||
| rcl_init_options_t init_options = rcl_get_zero_initialized_init_options(); | ||
| auto mock = mocking_utils::patch_and_return("lib:rcl", rmw_init_options_init, RMW_RET_ERROR); | ||
| EXPECT_EQ(RCL_RET_ERROR, rcl_init_options_init(&init_options, rcl_get_default_allocator())); | ||
| rcl_reset_error(); | ||
| } | ||
|
|
||
| // Tests rcl_init_options_fini() mocked to fail | ||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_mocked_rcl_init_options_fini) { | ||
| 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; | ||
| auto mock = mocking_utils::patch_and_return("lib:rcl", rmw_init_options_fini, RMW_RET_ERROR); | ||
|
||
| EXPECT_EQ(RCL_RET_ERROR, rcl_init_options_fini(&init_options)); | ||
| rcl_reset_error(); | ||
| } | ||
|
|
||
| // Mock rcl_init_options_copy to fail | ||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_copy_mocked_fail_fini) { | ||
| 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_init_options_t init_options_dst = rcl_get_zero_initialized_init_options(); | ||
| OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT( | ||
| { | ||
| EXPECT_EQ(RCL_RET_OK, rcl_init_options_fini(&init_options_dst)) << rcl_get_error_string().str; | ||
| }); | ||
|
|
||
| auto mock = mocking_utils::patch_and_return("lib:rcl", rmw_init_options_fini, RMW_RET_ERROR); | ||
|
||
| EXPECT_EQ(RCL_RET_ERROR, rcl_init_options_copy(&init_options, &init_options_dst)); | ||
| rcl_reset_error(); | ||
| } | ||
|
|
||
| // Mock rcl_init_options_copy to fail | ||
| TEST_F(CLASSNAME(TestRCLFixture, RMW_IMPLEMENTATION), test_rcl_init_options_copy_fail_rmw_copy) { | ||
| 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_init_options_t init_options_dst = rcl_get_zero_initialized_init_options(); | ||
| OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT( | ||
| { | ||
| // dst is in a invalid state after failed copy | ||
| EXPECT_EQ( | ||
| RCL_RET_INVALID_ARGUMENT, | ||
| rcl_init_options_fini(&init_options_dst)) << rcl_get_error_string().str; | ||
| rcl_reset_error(); | ||
| }); | ||
|
|
||
| // rmw_init_options_copy error is logged | ||
| auto mock = mocking_utils::patch_and_return("lib:rcl", rmw_init_options_copy, RMW_RET_ERROR); | ||
| EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_init_options_copy(&init_options, &init_options_dst)); | ||
| rcl_reset_error(); | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.