Skip to content

Commit 84fadca

Browse files
committed
gpio_controllers test params struct fixturised
1 parent a0c5310 commit 84fadca

File tree

1 file changed

+39
-159
lines changed

1 file changed

+39
-159
lines changed

gpio_controllers/test/test_gpio_command_controller.cpp

Lines changed: 39 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -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

234243
TEST_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

Comments
 (0)