@@ -1211,6 +1211,11 @@ TEST_P(TrajectoryControllerTestParameterized, invalid_message)
12111211 traj_msg.joint_names = {" bad_name" };
12121212 EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
12131213
1214+ // empty message
1215+ traj_msg = good_traj_msg;
1216+ traj_msg.points .clear ();
1217+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1218+
12141219 // No position data
12151220 traj_msg = good_traj_msg;
12161221 traj_msg.points [0 ].positions .clear ();
@@ -1247,8 +1252,41 @@ TEST_P(TrajectoryControllerTestParameterized, invalid_message)
12471252 EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
12481253}
12491254
1250- // / With allow_integration_in_goal_trajectories parameter trajectory missing position or
1251- // / velocities are accepted
1255+ /* *
1256+ * @brief Test invalid velocity at trajectory end with parameter set to false
1257+ */
1258+ TEST_P (
1259+ TrajectoryControllerTestParameterized,
1260+ expect_invalid_when_message_with_nonzero_end_velocity_and_when_param_false)
1261+ {
1262+ rclcpp::Parameter nonzero_vel_parameters (" allow_nonzero_velocity_at_trajectory_end" , false );
1263+ rclcpp::executors::SingleThreadedExecutor executor;
1264+ SetUpAndActivateTrajectoryController (executor, {nonzero_vel_parameters});
1265+
1266+ trajectory_msgs::msg::JointTrajectory traj_msg;
1267+ traj_msg.joint_names = joint_names_;
1268+ traj_msg.header .stamp = rclcpp::Time (0 );
1269+
1270+ // empty message (no throw!)
1271+ ASSERT_NO_THROW (traj_controller_->validate_trajectory_msg (traj_msg));
1272+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1273+
1274+ // Nonzero velocity at trajectory end!
1275+ traj_msg.points .resize (1 );
1276+ traj_msg.points [0 ].time_from_start = rclcpp::Duration::from_seconds (0.25 );
1277+ traj_msg.points [0 ].positions .resize (1 );
1278+ traj_msg.points [0 ].positions = {1.0 , 2.0 , 3.0 };
1279+ traj_msg.points [0 ].velocities .resize (1 );
1280+ traj_msg.points [0 ].velocities = {-1.0 , -2.0 , -3.0 };
1281+ EXPECT_FALSE (traj_controller_->validate_trajectory_msg (traj_msg));
1282+ }
1283+
1284+ /* *
1285+ * @brief missing_positions_message_accepted Test mismatched joint and reference vector sizes
1286+ *
1287+ * @note With allow_integration_in_goal_trajectories parameter trajectory missing position or
1288+ * velocities are accepted
1289+ */
12521290TEST_P (TrajectoryControllerTestParameterized, missing_positions_message_accepted)
12531291{
12541292 rclcpp::Parameter allow_integration_parameters (" allow_integration_in_goal_trajectories" , true );
0 commit comments