Skip to content

Commit 3f1b2b3

Browse files
committed
adapt old tests
Signed-off-by: Ivan Santiago Paunovic <[email protected]>
1 parent d46f8d9 commit 3f1b2b3

File tree

1 file changed

+55
-13
lines changed

1 file changed

+55
-13
lines changed

rclcpp/test/rclcpp/test_node.cpp

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -842,12 +842,23 @@ TEST_F(TestNode, set_parameter_undeclared_parameters_not_allowed) {
842842
EXPECT_EQ(node->get_parameter(name).get_value<int>(), 43);
843843
}
844844
{
845-
// normal use, change type
845+
// normal use, change type not allowed
846846
auto name = "parameter"_unq;
847847
EXPECT_FALSE(node->has_parameter(name));
848848
node->declare_parameter(name, 42);
849849
EXPECT_TRUE(node->has_parameter(name));
850850
EXPECT_EQ(node->get_parameter(name).get_value<int>(), 42);
851+
EXPECT_FALSE(node->set_parameter(rclcpp::Parameter(name, "not an integer")).successful);
852+
}
853+
{
854+
// normal use, change type
855+
auto name = "parameter"_unq;
856+
EXPECT_FALSE(node->has_parameter(name));
857+
rcl_interfaces::msg::ParameterDescriptor descriptor;
858+
descriptor.static_typing = false;
859+
node->declare_parameter(name, 42, descriptor);
860+
EXPECT_TRUE(node->has_parameter(name));
861+
EXPECT_EQ(node->get_parameter(name).get_value<int>(), 42);
851862
EXPECT_TRUE(node->set_parameter(rclcpp::Parameter(name, "not an integer")).successful);
852863
EXPECT_EQ(node->get_parameter(name).get_value<std::string>(), std::string("not an integer"));
853864
}
@@ -864,8 +875,6 @@ TEST_F(TestNode, set_parameter_undeclared_parameters_not_allowed) {
864875
EXPECT_TRUE(node->has_parameter(name3));
865876

866877
EXPECT_EQ(node->get_parameter(name1).get_value<int>(), 42);
867-
EXPECT_TRUE(node->set_parameter(rclcpp::Parameter(name1, "not an integer")).successful);
868-
EXPECT_EQ(node->get_parameter(name1).get_value<std::string>(), std::string("not an integer"));
869878

870879
EXPECT_EQ(node->get_parameter(name2).get_value<bool>(), true);
871880
EXPECT_TRUE(node->set_parameter(rclcpp::Parameter(name2, false)).successful);
@@ -910,13 +919,26 @@ TEST_F(TestNode, set_parameter_undeclared_parameters_not_allowed) {
910919
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_NOT_SET);
911920
}
912921
{
913-
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will undeclare
922+
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will fail
914923
auto name = "parameter"_unq;
915924
node->declare_parameter(name, 42);
916925
EXPECT_TRUE(node->has_parameter(name));
917926
auto value = node->get_parameter(name);
918927
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
919928

929+
EXPECT_FALSE(node->set_parameter(rclcpp::Parameter(name)).successful);
930+
}
931+
{
932+
// setting type of rclcpp::PARAMETER_NOT_SET,
933+
// when dynamic typing is allowing and already set to another type, will undeclare
934+
auto name = "parameter"_unq;
935+
rcl_interfaces::msg::ParameterDescriptor descriptor;
936+
descriptor.static_typing = false;
937+
node->declare_parameter(name, 42, descriptor);
938+
EXPECT_TRUE(node->has_parameter(name));
939+
auto value = node->get_parameter(name);
940+
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
941+
920942
EXPECT_TRUE(node->set_parameter(rclcpp::Parameter(name)).successful);
921943

922944
EXPECT_FALSE(node->has_parameter(name));
@@ -1256,15 +1278,9 @@ TEST_F(TestNode, set_parameter_undeclared_parameters_not_allowed) {
12561278
auto name = "parameter"_unq;
12571279
rcl_interfaces::msg::ParameterDescriptor descriptor;
12581280
descriptor.type = rclcpp::PARAMETER_INTEGER;
1259-
node->declare_parameter(name, 42, descriptor);
1281+
node->declare_parameter(name, "asd", descriptor);
12601282
EXPECT_TRUE(node->has_parameter(name));
12611283
auto value = node->get_parameter(name);
1262-
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
1263-
EXPECT_EQ(value.get_value<int64_t>(), 42);
1264-
1265-
EXPECT_TRUE(node->set_parameter(rclcpp::Parameter(name, "asd")).successful);
1266-
EXPECT_TRUE(node->has_parameter(name));
1267-
value = node->get_parameter(name);
12681284
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_STRING);
12691285
EXPECT_EQ(value.get_value<std::string>(), "asd");
12701286
}
@@ -1422,13 +1438,26 @@ TEST_F(TestNode, set_parameters_undeclared_parameters_not_allowed) {
14221438
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_NOT_SET);
14231439
}
14241440
{
1425-
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will undeclare
1441+
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will fail
14261442
auto name = "parameter"_unq;
14271443
node->declare_parameter(name, 42);
14281444
EXPECT_TRUE(node->has_parameter(name));
14291445
auto value = node->get_parameter(name);
14301446
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
14311447

1448+
EXPECT_FALSE(node->set_parameters({rclcpp::Parameter(name)})[0].successful);
1449+
}
1450+
{
1451+
// setting type of rclcpp::PARAMETER_NOT_SET,
1452+
// when already to another type and dynamic typic allowed, will undeclare
1453+
auto name = "parameter"_unq;
1454+
rcl_interfaces::msg::ParameterDescriptor descriptor;
1455+
descriptor.static_typing = false;
1456+
node->declare_parameter(name, 42, descriptor);
1457+
EXPECT_TRUE(node->has_parameter(name));
1458+
auto value = node->get_parameter(name);
1459+
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
1460+
14321461
EXPECT_TRUE(node->set_parameters({rclcpp::Parameter(name)})[0].successful);
14331462

14341463
EXPECT_FALSE(node->has_parameter(name));
@@ -1596,13 +1625,26 @@ TEST_F(TestNode, set_parameters_atomically_undeclared_parameters_not_allowed) {
15961625
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_NOT_SET);
15971626
}
15981627
{
1599-
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will undeclare
1628+
// setting type of rclcpp::PARAMETER_NOT_SET, when already to another type, will fail
16001629
auto name = "parameter"_unq;
16011630
node->declare_parameter(name, 42);
16021631
EXPECT_TRUE(node->has_parameter(name));
16031632
auto value = node->get_parameter(name);
16041633
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
16051634

1635+
EXPECT_FALSE(node->set_parameters_atomically({rclcpp::Parameter(name)}).successful);
1636+
}
1637+
{
1638+
// setting type of rclcpp::PARAMETER_NOT_SET,
1639+
// when dynamic typing is allowed and already declared to another type, will undeclare
1640+
auto name = "parameter"_unq;
1641+
rcl_interfaces::msg::ParameterDescriptor descriptor;
1642+
descriptor.static_typing = false;
1643+
node->declare_parameter(name, 42, descriptor);
1644+
EXPECT_TRUE(node->has_parameter(name));
1645+
auto value = node->get_parameter(name);
1646+
EXPECT_EQ(value.get_type(), rclcpp::PARAMETER_INTEGER);
1647+
16061648
EXPECT_TRUE(node->set_parameters_atomically({rclcpp::Parameter(name)}).successful);
16071649

16081650
EXPECT_FALSE(node->has_parameter(name));

0 commit comments

Comments
 (0)