diff --git a/hardware_interface/test/mock_components/test_generic_system.cpp b/hardware_interface/test/mock_components/test_generic_system.cpp
index fe0a062fc1..06e9ed502d 100644
--- a/hardware_interface/test/mock_components/test_generic_system.cpp
+++ b/hardware_interface/test/mock_components/test_generic_system.cpp
@@ -414,6 +414,40 @@ class TestGenericSystem : public ::testing::Test
)";
+
+ sensor_with_initial_value_ =
+ R"(
+
+
+ fake_components/GenericSystem
+
+
+
+ 0.0
+
+
+ 0.0
+
+
+ 0.0
+
+
+
+)";
+
+ gpio_with_initial_value_ =
+ R"(
+
+
+ fake_components/GenericSystem
+
+
+
+ 1
+
+
+
+)";
}
std::string hardware_robot_2dof_;
@@ -431,6 +465,8 @@ class TestGenericSystem : public ::testing::Test
std::string hardware_system_2dof_standard_interfaces_with_custom_interface_for_offset_missing_;
std::string valid_urdf_ros2_control_system_robot_with_gpio_;
std::string valid_urdf_ros2_control_system_robot_with_gpio_fake_command_;
+ std::string sensor_with_initial_value_;
+ std::string gpio_with_initial_value_;
};
// Forward declaration
@@ -1470,3 +1506,50 @@ TEST_F(TestGenericSystem, valid_urdf_ros2_control_system_robot_with_gpio_fake_co
ASSERT_EQ(1.11, gpio1_a_i2_c.get_value());
ASSERT_EQ(2.22, gpio2_vac_c.get_value());
}
+
+TEST_F(TestGenericSystem, sensor_with_initial_value_)
+{
+ auto urdf = ros2_control_test_assets::urdf_head + sensor_with_initial_value_ +
+ ros2_control_test_assets::urdf_tail;
+ TestableResourceManager rm(urdf);
+ // Activate components to get all interfaces available
+ activate_components(rm);
+
+ // Check interfaces
+ EXPECT_EQ(1u, rm.system_components_size());
+ ASSERT_EQ(3u, rm.state_interface_keys().size());
+ EXPECT_TRUE(rm.state_interface_exists("force_sensor/force.x"));
+ EXPECT_TRUE(rm.state_interface_exists("force_sensor/force.y"));
+ EXPECT_TRUE(rm.state_interface_exists("force_sensor/force.z"));
+
+ // Check initial values
+ hardware_interface::LoanedStateInterface force_x_s =
+ rm.claim_state_interface("force_sensor/force.x");
+ hardware_interface::LoanedStateInterface force_y_s =
+ rm.claim_state_interface("force_sensor/force.y");
+ hardware_interface::LoanedStateInterface force_z_s =
+ rm.claim_state_interface("force_sensor/force.z");
+
+ ASSERT_EQ(0.0, force_x_s.get_value());
+ ASSERT_EQ(0.0, force_y_s.get_value());
+ ASSERT_EQ(0.0, force_z_s.get_value());
+}
+
+TEST_F(TestGenericSystem, gpio_with_initial_value_)
+{
+ auto urdf = ros2_control_test_assets::urdf_head + gpio_with_initial_value_ +
+ ros2_control_test_assets::urdf_tail;
+ TestableResourceManager rm(urdf);
+ // Activate components to get all interfaces available
+ activate_components(rm);
+
+ // Check interfaces
+ EXPECT_EQ(1u, rm.system_components_size());
+ ASSERT_EQ(1u, rm.state_interface_keys().size());
+ EXPECT_TRUE(rm.state_interface_exists("sample_io/output_1"));
+
+ // Check initial values
+ hardware_interface::LoanedStateInterface state = rm.claim_state_interface("sample_io/output_1");
+
+ ASSERT_EQ(1, state.get_value());
+}