#include "ur_modern_driver/ur/robot_mode.h" #include #include "ur_modern_driver/bin_parser.h" #include "ur_modern_driver/log.h" #include "ur_modern_driver/test/random_data.h" #include "ur_modern_driver/test/utils.h" #include "ur_modern_driver/types.h" TEST(RobotModeData_V1_X, testRandomDataParsing) { RandomDataTest rdt(24); BinParser bp = rdt.getParser(); RobotModeData_V1_X state; ASSERT_TRUE(state.parseWith(bp)) << "parse() returned false"; ASSERT_EQ(rdt.getNext(), state.timestamp); ASSERT_EQ(rdt.getNext(), state.physical_robot_connected); ASSERT_EQ(rdt.getNext(), state.real_robot_enabled); ASSERT_EQ(rdt.getNext(), state.robot_power_on); ASSERT_EQ(rdt.getNext(), state.emergency_stopped); ASSERT_EQ(rdt.getNext(), state.security_stopped); ASSERT_EQ(rdt.getNext(), state.program_running); ASSERT_EQ(rdt.getNext(), state.program_paused); ASSERT_EQ(rdt.getNext(), state.robot_mode); ASSERT_EQ(rdt.getNext(), state.speed_fraction); ASSERT_TRUE(bp.empty()) << "Did not consume all data"; } TEST(RobotModeData_V3_0__1, testRandomDataParsing) { RandomDataTest rdt(33); BinParser bp = rdt.getParser(); RobotModeData_V3_0__1 state; ASSERT_TRUE(state.parseWith(bp)) << "parse() returned false"; ASSERT_EQ(rdt.getNext(), state.timestamp); ASSERT_EQ(rdt.getNext(), state.physical_robot_connected); ASSERT_EQ(rdt.getNext(), state.real_robot_enabled); ASSERT_EQ(rdt.getNext(), state.robot_power_on); ASSERT_EQ(rdt.getNext(), state.emergency_stopped); ASSERT_EQ(rdt.getNext(), state.protective_stopped); ASSERT_EQ(rdt.getNext(), state.program_running); ASSERT_EQ(rdt.getNext(), state.program_paused); ASSERT_EQ(rdt.getNext(), state.robot_mode); ASSERT_EQ(rdt.getNext(), state.control_mode); ASSERT_EQ(rdt.getNext(), state.target_speed_fraction); ASSERT_EQ(rdt.getNext(), state.speed_scaling); ASSERT_TRUE(bp.empty()) << "Did not consume all data"; } TEST(RobotModeData_V3_2, testRandomDataParsing) { RandomDataTest rdt(41); BinParser bp = rdt.getParser(); RobotModeData_V3_2 state; ASSERT_TRUE(state.parseWith(bp)) << "parse() returned false"; ASSERT_EQ(rdt.getNext(), state.timestamp); ASSERT_EQ(rdt.getNext(), state.physical_robot_connected); ASSERT_EQ(rdt.getNext(), state.real_robot_enabled); ASSERT_EQ(rdt.getNext(), state.robot_power_on); ASSERT_EQ(rdt.getNext(), state.emergency_stopped); ASSERT_EQ(rdt.getNext(), state.protective_stopped); ASSERT_EQ(rdt.getNext(), state.program_running); ASSERT_EQ(rdt.getNext(), state.program_paused); ASSERT_EQ(rdt.getNext(), state.robot_mode); ASSERT_EQ(rdt.getNext(), state.control_mode); ASSERT_EQ(rdt.getNext(), state.target_speed_fraction); ASSERT_EQ(rdt.getNext(), state.speed_scaling); ASSERT_EQ(rdt.getNext(), state.target_speed_fraction_limit); ASSERT_TRUE(bp.empty()) << "Did not consume all data"; } TEST(RobotModeData_V1_X, testTooSmallBuffer) { RandomDataTest rdt(10); BinParser bp = rdt.getParser(); RobotModeData_V1_X state; EXPECT_FALSE(state.parseWith(bp)) << "parse() should fail when buffer not big enough"; } TEST(RobotModeData_V3_0__1, testTooSmallBuffer) { RandomDataTest rdt(10); BinParser bp = rdt.getParser(); RobotModeData_V3_0__1 state; EXPECT_FALSE(state.parseWith(bp)) << "parse() should fail when buffer not big enough"; } TEST(RobotModeData_V3_2, testTooSmallBuffer) { RandomDataTest rdt(10); BinParser bp = rdt.getParser(); RobotModeData_V3_2 state; EXPECT_FALSE(state.parseWith(bp)) << "parse() should fail when buffer not big enough"; }