diff --git a/tests/test_rtde_client.cpp b/tests/test_rtde_client.cpp index 7d6523fd..beac47f7 100644 --- a/tests/test_rtde_client.cpp +++ b/tests/test_rtde_client.cpp @@ -40,7 +40,7 @@ class RTDEClientTest : public ::testing::Test protected: void SetUp() { - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe_)); + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file_)); } void TearDown() @@ -50,12 +50,54 @@ class RTDEClientTest : public ::testing::Test std::this_thread::sleep_for(std::chrono::seconds(1)); } - std::string output_recipe_ = "resources/rtde_output_recipe.txt"; - std::string input_recipe_ = "resources/rtde_input_recipe.txt"; + std::string output_recipe_file_ = "resources/rtde_output_recipe.txt"; + std::string input_recipe_file_ = "resources/rtde_input_recipe.txt"; comm::INotifier notifier_; std::unique_ptr client_; }; +std::vector resources_output_recipe = {"timestamp", + "actual_q", + "actual_qd", + "speed_scaling", + "target_speed_fraction", + "runtime_state", + "actual_TCP_force", + "actual_TCP_pose", + "actual_digital_input_bits", + "actual_digital_output_bits", + "standard_analog_input0", + "standard_analog_input1", + "standard_analog_output0", + "standard_analog_output1", + "analog_io_types", + "tool_mode", + "tool_analog_input_types", + "tool_analog_input0", + "tool_analog_input1", + "tool_output_voltage", + "tool_output_current", + "tool_temperature", + "robot_mode", + "safety_mode", + "robot_status_bits", + "safety_status_bits", + "actual_current", + "tcp_offset" }; + +std::vector resources_input_recipe = { "speed_slider_mask", + "speed_slider_fraction", + "standard_digital_output_mask", + "standard_digital_output", + "configurable_digital_output_mask", + "configurable_digital_output", + "tool_digital_output_mask", + "tool_digital_output", + "standard_analog_output_mask", + "standard_analog_output_type", + "standard_analog_output_0", + "standard_analog_output_1" }; + TEST_F(RTDEClientTest, rtde_handshake) { EXPECT_TRUE(client_->init()); @@ -63,26 +105,26 @@ TEST_F(RTDEClientTest, rtde_handshake) TEST_F(RTDEClientTest, no_recipe) { - std::string output_recipe = ""; - std::string input_recipe = ""; - EXPECT_THROW(client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe, input_recipe)), + std::string output_recipe_file = ""; + std::string input_recipe_file = ""; + EXPECT_THROW(client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file, input_recipe_file)), UrException); // Only input recipe is unconfigured - EXPECT_THROW(client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe)), + EXPECT_THROW(client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file)), UrException); } -TEST_F(RTDEClientTest, empty_recipe) +TEST_F(RTDEClientTest, empty_recipe_file) { - std::string output_recipe = "resources/empty.txt"; - std::string input_recipe = "resources/empty.txt"; - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe, input_recipe)); + std::string output_recipe_file = "resources/empty.txt"; + std::string input_recipe_file = "resources/empty.txt"; + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file, input_recipe_file)); EXPECT_THROW(client_->init(), UrException); // Only input recipe is empty - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe)); + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file)); EXPECT_THROW(client_->init(), UrException); } @@ -90,11 +132,11 @@ TEST_F(RTDEClientTest, empty_recipe) TEST_F(RTDEClientTest, invalid_target_frequency) { // Setting target frequency below 0 or above 500, should throw an exception - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe_, -1.0)); + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file_, -1.0)); EXPECT_THROW(client_->init(), UrException); - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe_, 1000)); + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file_, 1000)); EXPECT_THROW(client_->init(), UrException); } @@ -113,7 +155,7 @@ TEST_F(RTDEClientTest, unconfigured_target_frequency) TEST_F(RTDEClientTest, set_target_frequency) { - client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_, input_recipe_, 1)); + client_.reset(new rtde_interface::RTDEClient(ROBOT_IP, notifier_, output_recipe_file_, input_recipe_file_, 1)); client_->init(); // Maximum frequency should still be equal to the robot's maximum frequency @@ -198,41 +240,25 @@ TEST_F(RTDEClientTest, pause_client) EXPECT_TRUE(client_->pause()); } -TEST_F(RTDEClientTest, output_recipe) +TEST_F(RTDEClientTest, output_recipe_file) { - std::vector expected_output_recipe = { "timestamp", - "actual_q", - "actual_qd", - "speed_scaling", - "target_speed_fraction", - "runtime_state", - "actual_TCP_force", - "actual_TCP_pose", - "actual_digital_input_bits", - "actual_digital_output_bits", - "standard_analog_input0", - "standard_analog_input1", - "standard_analog_output0", - "standard_analog_output1", - "analog_io_types", - "tool_mode", - "tool_analog_input_types", - "tool_analog_input0", - "tool_analog_input1", - "tool_output_voltage", - "tool_output_current", - "tool_temperature", - "robot_mode", - "safety_mode", - "robot_status_bits", - "safety_status_bits", - "actual_current", - "tcp_offset" }; - std::vector actual_output_recipe = client_->getOutputRecipe(); - for (unsigned int i = 0; i < expected_output_recipe.size(); ++i) + for (unsigned int i = 0; i < resources_output_recipe.size(); ++i) + { + EXPECT_EQ(resources_output_recipe[i], actual_output_recipe[i]); + } +} + +TEST_F(RTDEClientTest, recipe_compairson) +{ + // Check that vectorized constructor provides same recipes as from file + auto client = rtde_interface::RTDEClient(ROBOT_IP, notifier_, resources_output_recipe, resources_input_recipe); + + std::vector output_recipe_from_file = client_->getOutputRecipe(); + std::vector output_recipe_from_vector = client.getOutputRecipe(); + for (unsigned int i = 0; i < output_recipe_from_file.size(); ++i) { - EXPECT_EQ(expected_output_recipe[i], actual_output_recipe[i]); + EXPECT_EQ(output_recipe_from_file[i], output_recipe_from_vector[i]); } }