29 #include <gtest/gtest.h> 36 TEST(rtde_parser, request_protocol_version)
39 unsigned char raw_data[] = { 0x00, 0x04, 0x56, 0x01 };
42 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
44 parser.
parse(bp, products);
46 EXPECT_EQ(products.size(), 1);
49 dynamic_cast<rtde_interface::RequestProtocolVersion*>(products[0].
get()))
51 EXPECT_EQ(data->accepted_,
true);
55 std::cout <<
"Failed to get request protocol version data" << std::endl;
60 TEST(rtde_parser, get_urcontrol_version)
63 unsigned char raw_data[] = { 0x00, 0x13, 0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
64 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
67 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
69 parser.
parse(bp, products);
71 EXPECT_EQ(products.size(), 1);
75 EXPECT_EQ(data->version_information_.major, 5);
76 EXPECT_EQ(data->version_information_.minor, 8);
77 EXPECT_EQ(data->version_information_.bugfix, 0);
78 EXPECT_EQ(data->version_information_.build, 0);
82 std::cout <<
"Failed to get urcontrol version data" << std::endl;
87 TEST(rtde_parser, control_package_pause)
90 unsigned char raw_data[] = { 0x00, 0x04, 0x50, 0x01 };
93 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
95 parser.
parse(bp, products);
97 EXPECT_EQ(products.size(), 1);
101 EXPECT_EQ(data->accepted_,
true);
105 std::cout <<
"Failed to get control package pause data" << std::endl;
110 TEST(rtde_parser, control_package_start)
113 unsigned char raw_data[] = { 0x00, 0x04, 0x53, 0x01 };
116 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
118 parser.
parse(bp, products);
120 EXPECT_EQ(products.size(), 1);
124 EXPECT_EQ(data->accepted_,
true);
128 std::cout <<
"Failed to get control package start data" << std::endl;
133 TEST(rtde_parser, control_package_setup_inputs)
136 unsigned char raw_data[] = { 0x00, 0x11, 0x49, 0x01, 0x55, 0x49, 0x4e, 0x54, 0x33,
137 0x32, 0x2c, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45 };
140 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
142 parser.
parse(bp, products);
144 EXPECT_EQ(products.size(), 1);
147 dynamic_cast<rtde_interface::ControlPackageSetupInputs*>(products[0].
get()))
149 EXPECT_EQ(data->input_recipe_id_, 1);
150 EXPECT_EQ(data->variable_types_,
"UINT32,DOUBLE");
154 std::cout <<
"Failed to get control package setup inputs data" << std::endl;
159 TEST(rtde_parser, control_package_setup_outputs)
162 unsigned char raw_data[] = { 0x00, 0x11, 0x4f, 0x01, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45,
163 0x2c, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x36, 0x44 };
166 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
169 parser.parse(bp, products);
171 EXPECT_EQ(products.size(), 1);
174 dynamic_cast<rtde_interface::ControlPackageSetupOutputs*>(products[0].
get()))
176 EXPECT_EQ(data->output_recipe_id_, 1);
177 EXPECT_EQ(data->variable_types_,
"DOUBLE,VECTOR6D");
181 std::cout <<
"Failed to get control package setup outputs data" << std::endl;
186 TEST(rtde_parser, data_package)
189 unsigned char raw_data[] = { 0x00, 0x14, 0x55, 0x01, 0x40, 0xd0, 0x07, 0x0d, 0x2f, 0x1a,
190 0x9f, 0xbe, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
193 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
194 std::vector<std::string> recipe = {
"timestamp",
"target_speed_fraction" };
197 parser.
parse(bp, products);
199 EXPECT_EQ(products.size(), 1);
203 double timestamp, target_speed_fraction;
204 data->getData(
"timestamp", timestamp);
205 data->getData(
"target_speed_fraction", target_speed_fraction);
207 EXPECT_FLOAT_EQ(timestamp, 16412.2);
208 EXPECT_EQ(target_speed_fraction, 1);
212 std::cout <<
"Failed to get data package data" << std::endl;
217 TEST(rtde_parser, test_to_string)
220 unsigned char raw_data[] = { 0x00, 0x05, 0x02, 0x00, 0x00 };
223 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
225 parser.
parse(bp, products);
227 EXPECT_EQ(products.size(), 1);
229 std::stringstream expected;
230 expected <<
"Type: 2" << std::endl;
231 expected <<
"Raw byte stream: 0 0 " << std::endl;
233 EXPECT_EQ(products[0]->toString(), expected.str());
236 TEST(rtde_parser, test_buffer_too_short)
239 unsigned char raw_data[] = { 0x00, 0x06, 0x02, 0x00, 0x00 };
242 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
244 EXPECT_FALSE(parser.parse(bp, products));
247 TEST(rtde_parser, test_buffer_too_long)
250 unsigned char raw_data[] = { 0x00, 0x04, 0x56, 0x01, 0x02, 0x01, 0x02 };
253 std::vector<std::unique_ptr<rtde_interface::RTDEPackage>> products;
255 EXPECT_FALSE(parser.parse(bp, products));
258 int main(
int argc,
char* argv[])
260 ::testing::InitGoogleTest(&argc, argv);
262 return RUN_ALL_TESTS();
void setProtocolVersion(uint16_t protocol_version)
This class handles the robot's response to a requested start in RTDE data package communication...
The BinParser class handles a byte buffer and functionality to iteratively parse the content...
This class handles the package detailing the UR control version sent by the robot.
bool parse(comm::BinParser &bp, std::vector< std::unique_ptr< RTDEPackage >> &results)
Uses the given BinParser to create package objects from the contained serialization.
The RTDE specific parser. Interprets a given byte stream as serialized RTDE packages and parses it ac...
This class handles the robot's response to a requested stop in RTDE data package communication.
int main(int argc, char *argv[])
This class handles the robot's response to a requested output recipe setup.
This class handles the robot's response after trying to set the used RTDE protocol version...
TEST(rtde_parser, request_protocol_version)
The DataPackage class handles communication in the form of RTDE data packages both to and from the ro...