@@ -1366,6 +1366,11 @@ TEST_P(TrajectoryControllerTestParameterized, invalid_message)
13661366 traj_msg.joint_names = {" bad_name" };
13671367 EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
13681368
1369+ // empty message
1370+ traj_msg = good_traj_msg;
1371+ traj_msg.points .clear ();
1372+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1373+
13691374 // No position data
13701375 traj_msg = good_traj_msg;
13711376 traj_msg.points [0 ].positions .clear ();
@@ -1402,8 +1407,41 @@ TEST_P(TrajectoryControllerTestParameterized, invalid_message)
14021407 EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
14031408}
14041409
1405- // / With allow_integration_in_goal_trajectories parameter trajectory missing position or
1406- // / velocities are accepted
1410+ /* *
1411+ * @brief Test invalid velocity at trajectory end with parameter set to false
1412+ */
1413+ TEST_P (
1414+ TrajectoryControllerTestParameterized,
1415+ expect_invalid_when_message_with_nonzero_end_velocity_and_when_param_false)
1416+ {
1417+ rclcpp::Parameter nonzero_vel_parameters (" allow_nonzero_velocity_at_trajectory_end" , false );
1418+ rclcpp::executors::SingleThreadedExecutor executor;
1419+ SetUpAndActivateTrajectoryController (executor, {nonzero_vel_parameters});
1420+
1421+ trajectory_msgs::msg::JointTrajectory traj_msg;
1422+ traj_msg.joint_names = joint_names_;
1423+ traj_msg.header .stamp = rclcpp::Time (0 );
1424+
1425+ // empty message (no throw!)
1426+ ASSERT_NO_THROW (traj_controller_->validate_trajectory_msg (traj_msg));
1427+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1428+
1429+ // Nonzero velocity at trajectory end!
1430+ traj_msg.points .resize (1 );
1431+ traj_msg.points [0 ].time_from_start = rclcpp::Duration::from_seconds (0.25 );
1432+ traj_msg.points [0 ].positions .resize (1 );
1433+ traj_msg.points [0 ].positions = {1.0 , 2.0 , 3.0 };
1434+ traj_msg.points [0 ].velocities .resize (1 );
1435+ traj_msg.points [0 ].velocities = {-1.0 , -2.0 , -3.0 };
1436+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1437+ }
1438+
1439+ /* *
1440+ * @brief missing_positions_message_accepted Test mismatched joint and reference vector sizes
1441+ *
1442+ * @note With allow_integration_in_goal_trajectories parameter trajectory missing position or
1443+ * velocities are accepted
1444+ */
14071445TEST_P (TrajectoryControllerTestParameterized, missing_positions_message_accepted)
14081446{
14091447 rclcpp::Parameter allow_integration_parameters (" allow_integration_in_goal_trajectories" , true );
0 commit comments