@@ -62,15 +62,15 @@ TEST(TestHandle, state_interface)
62
62
63
63
TEST (TestHandle, name_getters_work)
64
64
{
65
- StateInterface handle{JOINT_NAME, FOO_INTERFACE};
65
+ StateInterface handle{JOINT_NAME, FOO_INTERFACE, nullptr };
66
66
EXPECT_EQ (handle.get_name (), std::string (JOINT_NAME) + " /" + std::string (FOO_INTERFACE));
67
67
EXPECT_EQ (handle.get_interface_name (), FOO_INTERFACE);
68
68
EXPECT_EQ (handle.get_prefix_name (), JOINT_NAME);
69
69
}
70
70
71
71
TEST (TestHandle, value_methods_throw_for_nullptr)
72
72
{
73
- CommandInterface handle{JOINT_NAME, FOO_INTERFACE};
73
+ CommandInterface handle{JOINT_NAME, FOO_INTERFACE, nullptr };
74
74
EXPECT_ANY_THROW (handle.get_optional ().value ());
75
75
EXPECT_ANY_THROW (std::ignore = handle.set_value (0.0 ));
76
76
}
@@ -234,6 +234,55 @@ TEST(TestHandle, interface_description_bool_data_type)
234
234
ASSERT_THROW ({ std::ignore = handle.get_optional <double >(); }, std::runtime_error);
235
235
}
236
236
237
+ TEST (TestHandle, handle_constructor_double_data_type)
238
+ {
239
+ const std::string POSITION_INTERFACE = " position" ;
240
+ const std::string JOINT_NAME_1 = " joint1" ;
241
+ StateInterface handle{JOINT_NAME_1, POSITION_INTERFACE, " double" , " 23.0" };
242
+
243
+ ASSERT_EQ (hardware_interface::HandleDataType::DOUBLE, handle.get_data_type ());
244
+ EXPECT_EQ (handle.get_name (), JOINT_NAME_1 + " /" + POSITION_INTERFACE);
245
+ EXPECT_EQ (handle.get_interface_name (), POSITION_INTERFACE);
246
+ EXPECT_EQ (handle.get_prefix_name (), JOINT_NAME_1);
247
+ EXPECT_NO_THROW ({ std::ignore = handle.get_optional <double >(); });
248
+ ASSERT_EQ (handle.get_optional <double >().value (), 23.0 );
249
+ ASSERT_TRUE (handle.get_optional <double >().has_value ());
250
+ ASSERT_TRUE (handle.set_value (0.0 ));
251
+ ASSERT_EQ (handle.get_optional <double >().value (), 0.0 );
252
+ ASSERT_TRUE (handle.set_value (1.0 ));
253
+ ASSERT_EQ (handle.get_optional <double >().value (), 1.0 );
254
+
255
+ // Test the assertions
256
+ ASSERT_THROW ({ std::ignore = handle.get_optional <bool >(); }, std::runtime_error);
257
+ ASSERT_THROW ({ std::ignore = handle.set_value (true ); }, std::runtime_error);
258
+ EXPECT_ANY_THROW ({ StateInterface bad_itf (" joint1" , POSITION_INTERFACE, " double" , " 233NaN0" ); })
259
+ << " Invalid double value should throw" ;
260
+ }
261
+
262
+ TEST (TestHandle, handle_constructor_bool_data_type)
263
+ {
264
+ const std::string collision_interface = " collision" ;
265
+ const std::string itf_name = " joint1" ;
266
+ StateInterface handle{itf_name, collision_interface, " bool" , " true" };
267
+
268
+ ASSERT_EQ (hardware_interface::HandleDataType::BOOL, handle.get_data_type ());
269
+ EXPECT_EQ (handle.get_name (), itf_name + " /" + collision_interface);
270
+ EXPECT_EQ (handle.get_interface_name (), collision_interface);
271
+ EXPECT_EQ (handle.get_prefix_name (), itf_name);
272
+ EXPECT_NO_THROW ({ std::ignore = handle.get_optional <bool >(); });
273
+ ASSERT_TRUE (handle.get_optional <bool >().value ())
274
+ << " Default value should be true as it is initialized" ;
275
+ ASSERT_TRUE (handle.set_value (false ));
276
+ ASSERT_FALSE (handle.get_optional <bool >().value ());
277
+ ASSERT_TRUE (handle.set_value (true ));
278
+ ASSERT_TRUE (handle.get_optional <bool >().value ());
279
+
280
+ // Test the assertions
281
+ ASSERT_THROW ({ std::ignore = handle.set_value (-1.0 ); }, std::runtime_error);
282
+ ASSERT_THROW ({ std::ignore = handle.set_value (0.0 ); }, std::runtime_error);
283
+ ASSERT_THROW ({ std::ignore = handle.get_optional <double >(); }, std::runtime_error);
284
+ }
285
+
237
286
TEST (TestHandle, interface_description_unknown_data_type)
238
287
{
239
288
const std::string collision_interface = " collision" ;
@@ -245,6 +294,8 @@ TEST(TestHandle, interface_description_unknown_data_type)
245
294
246
295
ASSERT_EQ (hardware_interface::HandleDataType::UNKNOWN, interface_descr.get_data_type ());
247
296
EXPECT_ANY_THROW ({ StateInterface handle{interface_descr}; }) << " Unknown data type should throw" ;
297
+ EXPECT_ANY_THROW ({ StateInterface handle (" joint1" , " collision" , " UNKNOWN" ); })
298
+ << " Unknown data type should throw" ;
248
299
}
249
300
250
301
TEST (TestHandle, interface_description_command_interface_name_getters_work)
0 commit comments