@@ -199,6 +199,9 @@ class GpioCommandControllerTestSuite : public ::testing::Test
199199
200200 std::unique_ptr<FriendGpioCommandController> controller_;
201201
202+ controller_interface::ControllerInterfaceParams createDefaultParams (
203+ const rclcpp::NodeOptions & node_options, const std::string & robot_description = " " );
204+
202205 const std::vector<std::string> gpio_names{" gpio1" , " gpio2" };
203206 std::vector<double > gpio_commands{1.0 , 0.0 , 3.1 };
204207 std::vector<double > gpio_states{1.0 , 0.0 , 3.1 };
@@ -218,30 +221,30 @@ class GpioCommandControllerTestSuite : public ::testing::Test
218221 std::make_shared<StateInterface>(gpio_names.at(1 ), " ana.1" , &gpio_states.at(2 ));
219222 std::unique_ptr<rclcpp::Node> node;
220223};
221-
222- TEST_F (GpioCommandControllerTestSuite, WhenNoParametersAreSetInitShouldFail )
224+ controller_interface::ControllerInterfaceParams GpioCommandControllerTestSuite::createDefaultParams (
225+ const rclcpp::NodeOptions & node_options, const std::string & robot_description )
223226{
224227 controller_interface::ControllerInterfaceParams params;
225228 params.controller_name = " test_gpio_command_controller" ;
226- params.robot_description = ros2_control_test_assets::minimal_robot_urdf ;
229+ params.robot_description = robot_description ;
227230 params.update_rate = 0 ;
228231 params.node_namespace = " " ;
229- params.node_options = controller_->define_custom_node_options ();
230- const auto result = controller_->init (params);
232+ params.node_options = node_options;
233+ return params;
234+ }
235+
236+ TEST_F (GpioCommandControllerTestSuite, WhenNoParametersAreSetInitShouldFail)
237+ {
238+ const auto result = controller_->init (createDefaultParams (
239+ controller_->define_custom_node_options (), ros2_control_test_assets::minimal_robot_urdf));
231240 ASSERT_EQ (result, controller_interface::return_type::ERROR);
232241}
233242
234243TEST_F (GpioCommandControllerTestSuite, WhenGpiosParameterIsEmptyInitShouldFail)
235244{
236245 const auto node_options =
237246 create_node_options_with_overriden_parameters ({{" gpios" , std::vector<std::string>{}}});
238- controller_interface::ControllerInterfaceParams params;
239- params.controller_name = " test_gpio_command_controller" ;
240- params.robot_description = " " ;
241- params.update_rate = 0 ;
242- params.node_namespace = " " ;
243- params.node_options = node_options;
244- const auto result = controller_->init (params);
247+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
245248
246249 ASSERT_EQ (result, controller_interface::return_type::ERROR);
247250}
@@ -252,13 +255,7 @@ TEST_F(GpioCommandControllerTestSuite, WhenInterfacesParameterForGpioIsEmptyInit
252255 {{" gpios" , std::vector<std::string>{" gpio1" }},
253256 {" command_interfaces.gpio1.interfaces" , std::vector<std::string>{}},
254257 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{}}});
255- controller_interface::ControllerInterfaceParams params;
256- params.controller_name = " test_gpio_command_controller" ;
257- params.robot_description = " " ;
258- params.update_rate = 0 ;
259- params.node_namespace = " " ;
260- params.node_options = node_options;
261- const auto result = controller_->init (params);
258+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
262259
263260 ASSERT_EQ (result, controller_interface::return_type::OK);
264261}
@@ -267,13 +264,7 @@ TEST_F(GpioCommandControllerTestSuite, WhenInterfacesParameterForGpioIsNotSetIni
267264{
268265 const auto node_options =
269266 create_node_options_with_overriden_parameters ({{" gpios" , std::vector<std::string>{" gpio1" }}});
270- controller_interface::ControllerInterfaceParams params;
271- params.controller_name = " test_gpio_command_controller" ;
272- params.robot_description = " " ;
273- params.update_rate = 0 ;
274- params.node_namespace = " " ;
275- params.node_options = node_options;
276- const auto result = controller_->init (params);
267+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
277268
278269 ASSERT_EQ (result, controller_interface::return_type::OK);
279270}
@@ -289,13 +280,7 @@ TEST_F(
289280 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
290281 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
291282
292- controller_interface::ControllerInterfaceParams params;
293- params.controller_name = " test_gpio_command_controller" ;
294- params.robot_description = " " ;
295- params.update_rate = 0 ;
296- params.node_namespace = " " ;
297- params.node_options = node_options;
298- const auto result = controller_->init (params);
283+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
299284 ASSERT_EQ (result, controller_interface::return_type::OK);
300285}
301286
@@ -307,13 +292,8 @@ TEST_F(
307292 {{" gpios" , std::vector<std::string>{" gpio1" }},
308293 {" command_interfaces.gpio1.interfaces" , std::vector<std::string>{}},
309294 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{}}});
310- controller_interface::ControllerInterfaceParams params;
311- params.controller_name = " test_gpio_command_controller" ;
312- params.robot_description = ros2_control_test_assets::minimal_robot_urdf;
313- params.update_rate = 0 ;
314- params.node_namespace = " " ;
315- params.node_options = node_options;
316- const auto result = controller_->init (params);
295+ const auto result = controller_->init (
296+ createDefaultParams (node_options, ros2_control_test_assets::minimal_robot_urdf));
317297 ASSERT_EQ (result, controller_interface::return_type::OK);
318298 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::ERROR);
319299}
@@ -326,13 +306,8 @@ TEST_F(
326306 {{" gpios" , std::vector<std::string>{" gpio1" }},
327307 {" command_interfaces.gpio1.interfaces" , std::vector<std::string>{}},
328308 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{}}});
329- controller_interface::ControllerInterfaceParams params;
330- params.controller_name = " test_gpio_command_controller" ;
331- params.robot_description = minimal_robot_urdf_with_gpio;
332- params.update_rate = 0 ;
333- params.node_namespace = " " ;
334- params.node_options = node_options;
335- const auto result = controller_->init (params);
309+ const auto result =
310+ controller_->init (createDefaultParams (node_options, minimal_robot_urdf_with_gpio));
336311
337312 ASSERT_EQ (result, controller_interface::return_type::OK);
338313 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
@@ -346,13 +321,7 @@ TEST_F(
346321 {{" gpios" , std::vector<std::string>{" gpio1" }},
347322 {" command_interfaces.gpio1.interfaces" , std::vector<std::string>{}},
348323 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{}}});
349- controller_interface::ControllerInterfaceParams params;
350- params.controller_name = " test_gpio_command_controller" ;
351- params.robot_description = " " ;
352- params.update_rate = 0 ;
353- params.node_namespace = " " ;
354- params.node_options = node_options;
355- const auto result = controller_->init (params);
324+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
356325
357326 ASSERT_EQ (result, controller_interface::return_type::OK);
358327 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::ERROR);
@@ -366,13 +335,7 @@ TEST_F(GpioCommandControllerTestSuite, ConfigureAndActivateParamsSuccess)
366335 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
367336 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
368337 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
369- controller_interface::ControllerInterfaceParams params;
370- params.controller_name = " test_gpio_command_controller" ;
371- params.robot_description = " " ;
372- params.update_rate = 0 ;
373- params.node_namespace = " " ;
374- params.node_options = node_options;
375- const auto result = controller_->init (params);
338+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
376339
377340 ASSERT_EQ (result, controller_interface::return_type::OK);
378341 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
@@ -390,13 +353,7 @@ TEST_F(
390353 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
391354 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
392355 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
393- controller_interface::ControllerInterfaceParams params;
394- params.controller_name = " test_gpio_command_controller" ;
395- params.robot_description = " " ;
396- params.update_rate = 0 ;
397- params.node_namespace = " " ;
398- params.node_options = node_options;
399- const auto result = controller_->init (params);
356+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
400357
401358 ASSERT_EQ (result, controller_interface::return_type::OK);
402359 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
@@ -424,13 +381,7 @@ TEST_F(
424381 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
425382 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
426383 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
427- controller_interface::ControllerInterfaceParams params;
428- params.controller_name = " test_gpio_command_controller" ;
429- params.robot_description = " " ;
430- params.update_rate = 0 ;
431- params.node_namespace = " " ;
432- params.node_options = node_options;
433- const auto result = controller_->init (params);
384+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
434385
435386 ASSERT_EQ (result, controller_interface::return_type::OK);
436387 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
@@ -459,13 +410,7 @@ TEST_F(
459410 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
460411 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" }},
461412 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
462- controller_interface::ControllerInterfaceParams params;
463- params.controller_name = " test_gpio_command_controller" ;
464- params.robot_description = " " ;
465- params.update_rate = 0 ;
466- params.node_namespace = " " ;
467- params.node_options = node_options;
468- const auto result = controller_->init (params);
413+ const auto result = controller_->init (createDefaultParams (node_options, " " ));
469414
470415 ASSERT_EQ (result, controller_interface::return_type::OK);
471416 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
@@ -495,13 +440,7 @@ TEST_F(
495440 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
496441 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
497442
498- controller_interface::ControllerInterfaceParams params;
499- params.controller_name = " test_gpio_command_controller" ;
500- params.robot_description = " " ;
501- params.update_rate = 0 ;
502- params.node_namespace = " " ;
503- params.node_options = node_options;
504- move_to_activate_state (controller_->init (params));
443+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
505444 assert_default_command_and_state_values ();
506445 update_controller_loop ();
507446 assert_default_command_and_state_values ();
@@ -517,13 +456,7 @@ TEST_F(
517456 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
518457 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
519458 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
520- controller_interface::ControllerInterfaceParams params;
521- params.controller_name = " test_gpio_command_controller" ;
522- params.robot_description = " " ;
523- params.update_rate = 0 ;
524- params.node_namespace = " " ;
525- params.node_options = node_options;
526- move_to_activate_state (controller_->init (params));
459+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
527460
528461 const auto command = createGpioCommand (
529462 {" gpio1" , " gpio2" }, {createInterfaceValue ({" dig.1" , " dig.2" }, {0.0 , 1.0 , 1.0 }),
@@ -544,13 +477,7 @@ TEST_F(
544477 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
545478 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
546479 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
547- controller_interface::ControllerInterfaceParams params;
548- params.controller_name = " test_gpio_command_controller" ;
549- params.robot_description = " " ;
550- params.update_rate = 0 ;
551- params.node_namespace = " " ;
552- params.node_options = node_options;
553- move_to_activate_state (controller_->init (params));
480+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
554481
555482 const auto command = createGpioCommand (
556483 {" gpio1" , " gpio2" },
@@ -571,13 +498,7 @@ TEST_F(
571498 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
572499 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
573500 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
574- controller_interface::ControllerInterfaceParams params;
575- params.controller_name = " test_gpio_command_controller" ;
576- params.robot_description = " " ;
577- params.update_rate = 0 ;
578- params.node_namespace = " " ;
579- params.node_options = node_options;
580- move_to_activate_state (controller_->init (params));
501+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
581502
582503 const auto command = createGpioCommand (
583504 {" gpio1" , " gpio2" }, {createInterfaceValue ({" dig.1" , " dig.2" }, {0.0 , 1.0 }),
@@ -600,13 +521,7 @@ TEST_F(
600521 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
601522 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
602523 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
603- controller_interface::ControllerInterfaceParams params;
604- params.controller_name = " test_gpio_command_controller" ;
605- params.robot_description = " " ;
606- params.update_rate = 0 ;
607- params.node_namespace = " " ;
608- params.node_options = node_options;
609- move_to_activate_state (controller_->init (params));
524+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
610525
611526 const auto command = createGpioCommand (
612527 {" gpio2" , " gpio1" }, {createInterfaceValue ({" ana.1" }, {30.0 }),
@@ -629,13 +544,7 @@ TEST_F(
629544 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
630545 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
631546 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
632- controller_interface::ControllerInterfaceParams params;
633- params.controller_name = " test_gpio_command_controller" ;
634- params.robot_description = " " ;
635- params.update_rate = 0 ;
636- params.node_namespace = " " ;
637- params.node_options = node_options;
638- move_to_activate_state (controller_->init (params));
547+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
639548
640549 const auto command =
641550 createGpioCommand ({" gpio1" }, {createInterfaceValue ({" dig.1" , " dig.2" }, {0.0 , 1.0 })});
@@ -657,13 +566,7 @@ TEST_F(
657566 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
658567 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
659568 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
660- controller_interface::ControllerInterfaceParams params;
661- params.controller_name = " test_gpio_command_controller" ;
662- params.robot_description = " " ;
663- params.update_rate = 0 ;
664- params.node_namespace = " " ;
665- params.node_options = node_options;
666- move_to_activate_state (controller_->init (params));
569+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
667570
668571 const auto command = createGpioCommand (
669572 {" gpio1" , " gpio3" }, {createInterfaceValue ({" dig.3" , " dig.4" }, {20.0 , 25.0 }),
@@ -686,13 +589,7 @@ TEST_F(
686589 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
687590 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
688591 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
689- controller_interface::ControllerInterfaceParams params;
690- params.controller_name = " test_gpio_command_controller" ;
691- params.robot_description = " " ;
692- params.update_rate = 0 ;
693- params.node_namespace = " " ;
694- params.node_options = node_options;
695- move_to_activate_state (controller_->init (params));
592+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
696593
697594 auto command_pub = node->create_publisher <CmdType>(
698595 std::string (controller_->get_node ()->get_name ()) + " /commands" , rclcpp::SystemDefaultsQoS ());
@@ -716,13 +613,7 @@ TEST_F(GpioCommandControllerTestSuite, ControllerShouldPublishGpioStatesWithCurr
716613 {" command_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }},
717614 {" state_interfaces.gpio1.interfaces" , std::vector<std::string>{" dig.1" , " dig.2" }},
718615 {" state_interfaces.gpio2.interfaces" , std::vector<std::string>{" ana.1" }}});
719- controller_interface::ControllerInterfaceParams params;
720- params.controller_name = " test_gpio_command_controller" ;
721- params.robot_description = " " ;
722- params.update_rate = 0 ;
723- params.node_namespace = " " ;
724- params.node_options = node_options;
725- move_to_activate_state (controller_->init (params));
616+ move_to_activate_state (controller_->init (createDefaultParams (node_options, " " )));
726617
727618 auto subscription = node->create_subscription <StateType>(
728619 std::string (controller_->get_node ()->get_name ()) + " /gpio_states" , 10 ,
@@ -761,13 +652,8 @@ TEST_F(
761652 state_interfaces.emplace_back (gpio_1_1_dig_state, nullptr );
762653 state_interfaces.emplace_back (gpio_2_ana_state, nullptr );
763654
764- controller_interface::ControllerInterfaceParams params;
765- params.controller_name = " test_gpio_command_controller" ;
766- params.robot_description = minimal_robot_urdf_with_gpio;
767- params.update_rate = 0 ;
768- params.node_namespace = " " ;
769- params.node_options = node_options;
770- const auto result_of_initialization = controller_->init (params);
655+ const auto result_of_initialization =
656+ controller_->init (createDefaultParams (node_options, minimal_robot_urdf_with_gpio));
771657 ASSERT_EQ (result_of_initialization, controller_interface::return_type::OK);
772658 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
773659 controller_->assign_interfaces (std::move (command_interfaces), std::move (state_interfaces));
@@ -801,13 +687,7 @@ TEST_F(
801687 std::vector<LoanedStateInterface> state_interfaces;
802688 state_interfaces.emplace_back (gpio_1_1_dig_state, nullptr );
803689 state_interfaces.emplace_back (gpio_2_ana_state, nullptr );
804- controller_interface::ControllerInterfaceParams params;
805- params.controller_name = " test_gpio_command_controller" ;
806- params.robot_description = " " ;
807- params.update_rate = 0 ;
808- params.node_namespace = " " ;
809- params.node_options = node_options;
810- const auto result_of_initialization = controller_->init (params);
690+ const auto result_of_initialization = controller_->init (createDefaultParams (node_options, " " ));
811691 ASSERT_EQ (result_of_initialization, controller_interface::return_type::OK);
812692 ASSERT_EQ (controller_->on_configure (rclcpp_lifecycle::State ()), CallbackReturn::SUCCESS);
813693 controller_->assign_interfaces ({}, std::move (state_interfaces));
0 commit comments