@@ -306,6 +306,39 @@ TEST_F(TestNode, subnode_get_name_and_namespace) {
306
306
}, rclcpp::exceptions::NameValidationError);
307
307
}
308
308
}
309
+
310
+ TEST_F (TestNode, subnode_parameter_operation) {
311
+ auto node = std::make_shared<rclcpp::Node>(" my_node" , " ns" );
312
+ auto subnode = node->create_sub_node (" sub_ns" );
313
+
314
+ auto value = subnode->declare_parameter (" param" , 5 );
315
+ EXPECT_EQ (value, 5 );
316
+ // node and sub-node shares NodeParameterInterface, so expecting the exception.
317
+ EXPECT_THROW (
318
+ node->declare_parameter (" param" , 0 ),
319
+ rclcpp::exceptions::ParameterAlreadyDeclaredException);
320
+ rclcpp::Parameter param;
321
+
322
+ node->get_parameter (" param" , param);
323
+ EXPECT_EQ (param.get_value <int >(), 5 );
324
+ subnode->get_parameter (" param" , param);
325
+ EXPECT_EQ (param.get_value <int >(), 5 );
326
+
327
+ int param_int;
328
+ node->get_parameter (" param" , param_int);
329
+ EXPECT_EQ (param_int, 5 );
330
+ subnode->get_parameter (" param" , param_int);
331
+ EXPECT_EQ (param_int, 5 );
332
+
333
+ EXPECT_EQ (node->get_parameter_or (" param" , 333 ), 5 );
334
+ EXPECT_EQ (subnode->get_parameter_or (" param" , 666 ), 5 );
335
+
336
+ node->get_parameter_or (" param" , param_int, 333 );
337
+ EXPECT_EQ (param_int, 5 );
338
+ subnode->get_parameter_or (" param" , param_int, 666 );
339
+ EXPECT_EQ (param_int, 5 );
340
+ }
341
+
309
342
/*
310
343
Testing node construction and destruction.
311
344
*/
0 commit comments