Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
This commit is contained in:
parent
fed3515c7e
commit
29f999a1cd
2 changed files with 30 additions and 8 deletions
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "rcl/domain_id.h"
|
#include "rcl/domain_id.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "rcutils/get_env.h"
|
#include "rcutils/get_env.h"
|
||||||
|
@ -40,10 +41,15 @@ rcl_get_default_domain_id(size_t * domain_id)
|
||||||
get_env_error_str);
|
get_env_error_str);
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
}
|
}
|
||||||
if (ros_domain_id) {
|
if (ros_domain_id && strcmp(ros_domain_id, "") != 0) {
|
||||||
unsigned long number = strtoul(ros_domain_id, NULL, 0); // NOLINT(runtime/int)
|
char * end = NULL;
|
||||||
if (number == ULONG_MAX) {
|
unsigned long number = strtoul(ros_domain_id, &end, 0); // NOLINT(runtime/int)
|
||||||
RCL_SET_ERROR_MSG("failed to interpret ROS_DOMAIN_ID as integral number");
|
if (number == 0UL && *end != '\0') {
|
||||||
|
RCL_SET_ERROR_MSG("ROS_DOMAIN_ID is not an integral number");
|
||||||
|
return RCL_RET_ERROR;
|
||||||
|
}
|
||||||
|
if ((number == ULONG_MAX && errno == ERANGE) || number > SIZE_MAX) {
|
||||||
|
RCL_SET_ERROR_MSG("ROS_DOMAIN_ID is out of range");
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
}
|
}
|
||||||
*domain_id = (size_t)number;
|
*domain_id = (size_t)number;
|
||||||
|
|
|
@ -22,15 +22,31 @@
|
||||||
|
|
||||||
TEST(TestGetDomainId, test_nominal) {
|
TEST(TestGetDomainId, test_nominal) {
|
||||||
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "42"));
|
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "42"));
|
||||||
size_t domain_id = 0u;
|
size_t domain_id = RCL_DEFAULT_DOMAIN_ID;
|
||||||
EXPECT_EQ(RCL_RET_OK, rcl_get_default_domain_id(&domain_id));
|
EXPECT_EQ(RCL_RET_OK, rcl_get_default_domain_id(&domain_id));
|
||||||
EXPECT_EQ(42u, domain_id);
|
EXPECT_EQ(42u, domain_id);
|
||||||
|
|
||||||
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "998446744073709551615"));
|
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", ""));
|
||||||
domain_id = 0u;
|
domain_id = RCL_DEFAULT_DOMAIN_ID;
|
||||||
|
EXPECT_EQ(RCL_RET_OK, rcl_get_default_domain_id(&domain_id));
|
||||||
|
EXPECT_EQ(RCL_DEFAULT_DOMAIN_ID, domain_id);
|
||||||
|
|
||||||
|
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "0000"));
|
||||||
|
domain_id = RCL_DEFAULT_DOMAIN_ID;
|
||||||
|
EXPECT_EQ(RCL_RET_OK, rcl_get_default_domain_id(&domain_id));
|
||||||
|
EXPECT_EQ(0u, domain_id);
|
||||||
|
|
||||||
|
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "0 not really"));
|
||||||
|
domain_id = RCL_DEFAULT_DOMAIN_ID;
|
||||||
EXPECT_EQ(RCL_RET_ERROR, rcl_get_default_domain_id(&domain_id));
|
EXPECT_EQ(RCL_RET_ERROR, rcl_get_default_domain_id(&domain_id));
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
EXPECT_EQ(0u, domain_id);
|
EXPECT_EQ(RCL_DEFAULT_DOMAIN_ID, domain_id);
|
||||||
|
|
||||||
|
ASSERT_TRUE(rcutils_set_env("ROS_DOMAIN_ID", "998446744073709551615"));
|
||||||
|
domain_id = RCL_DEFAULT_DOMAIN_ID;
|
||||||
|
EXPECT_EQ(RCL_RET_ERROR, rcl_get_default_domain_id(&domain_id));
|
||||||
|
rcl_reset_error();
|
||||||
|
EXPECT_EQ(RCL_DEFAULT_DOMAIN_ID, domain_id);
|
||||||
|
|
||||||
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_get_default_domain_id(nullptr));
|
EXPECT_EQ(RCL_RET_INVALID_ARGUMENT, rcl_get_default_domain_id(nullptr));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue