tesseract_urdf_cylinder_unit.cpp
Go to the documentation of this file.
3 #include <gtest/gtest.h>
4 #include <Eigen/Geometry>
6 
10 
11 TEST(TesseractURDFUnit, parse_cylinder) // NOLINT
12 {
13  {
14  std::string str = R"(<cylinder radius="1" length="2" extra="0 0 0"/>)";
16  EXPECT_TRUE(runTest<tesseract_geometry::Cylinder::Ptr>(
18  EXPECT_NEAR(geom->getRadius(), 1, 1e-8);
19  EXPECT_NEAR(geom->getLength(), 2, 1e-8);
20  }
21 
22  { // https://github.com/ros-industrial-consortium/tesseract_ros/issues/67
23  std::string str = R"(<cylinder radius="0.25" length="0.5" extra="0 0 0"/>)";
25  EXPECT_TRUE(runTest<tesseract_geometry::Cylinder::Ptr>(
27  EXPECT_NEAR(geom->getRadius(), 0.25, 1e-8);
28  EXPECT_NEAR(geom->getLength(), 0.5, 1e-8);
29  }
30 
31  {
32  std::string str = R"(<cylinder radius="-1" length="2" extra="0 0 0"/>)";
34  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
36  }
37 
38  {
39  std::string str = R"(<cylinder radius="1" length="-2" extra="0 0 0"/>)";
41  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
43  }
44 
45  {
46  std::string str = R"(<cylinder radius="a" length="2"/>)";
48  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
50  }
51 
52  {
53  std::string str = R"(<cylinder radius="1" length="a"/>)";
55  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
57  }
58 
59  // TODO: I would expect this to fail but tinyxml2 still parses it so need to create an issue.
60  // {
61  // std::string str = R"(<cylinder radius="1 2" length="2 3"/>)";
62  // tesseract_geometry::Cylinder::Ptr geom;
63  // auto status = runTest<tesseract_geometry::Cylinder::Ptr>(geom, str,
64  // tesseract_urdf::CYLINDER_ELEMENT_NAME.data()); EXPECT_FALSE(*status); EXPECT_FALSE(status->message().empty());
65  // }
66 
67  {
68  std::string str = R"(<cylinder radius="1"/>)";
70  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
72  }
73 
74  {
75  std::string str = R"(<cylinder length="2"/>)";
77  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
79  }
80 
81  {
82  std::string str = "<cylinder />";
84  EXPECT_FALSE(runTest<tesseract_geometry::Cylinder::Ptr>(
86  }
87 }
88 
89 TEST(TesseractURDFUnit, write_cylinder) // NOLINT
90 {
91  {
92  tesseract_geometry::Cylinder::Ptr cylinder = std::make_shared<tesseract_geometry::Cylinder>(0.5, 1.0);
93  std::string text;
94  EXPECT_EQ(0, writeTest<tesseract_geometry::Cylinder::Ptr>(cylinder, &tesseract_urdf::writeCylinder, text));
95  EXPECT_NE(text, "");
96  }
97 
98  {
99  tesseract_geometry::Cylinder::Ptr cylinder = nullptr;
100  std::string text;
101  EXPECT_EQ(1, writeTest<tesseract_geometry::Cylinder::Ptr>(cylinder, &tesseract_urdf::writeCylinder, text));
102  EXPECT_EQ(text, "");
103  }
104 }
tesseract_geometry::Cylinder::Ptr
std::shared_ptr< Cylinder > Ptr
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
cylinder.h
EXPECT_TRUE
#define EXPECT_TRUE(args)
tesseract_urdf_common_unit.h
EXPECT_NEAR
#define EXPECT_NEAR(a, b, prec)
tesseract_urdf::writeCylinder
tinyxml2::XMLElement * writeCylinder(const std::shared_ptr< const tesseract_geometry::Cylinder > &cylinder, tinyxml2::XMLDocument &doc)
Definition: cylinder.cpp:52
tesseract_urdf::CYLINDER_ELEMENT_NAME
static constexpr std::string_view CYLINDER_ELEMENT_NAME
Definition: cylinder.h:45
TESSERACT_COMMON_IGNORE_WARNINGS_POP
TEST
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH TESSERACT_COMMON_IGNORE_WARNINGS_POP TEST(TesseractURDFUnit, parse_cylinder)
Definition: tesseract_urdf_cylinder_unit.cpp:11
tesseract_urdf::parseCylinder
std::shared_ptr< tesseract_geometry::Cylinder > parseCylinder(const tinyxml2::XMLElement *xml_element)
Parse a xml cylinder element.
Definition: cylinder.cpp:40
macros.h
EXPECT_EQ
#define EXPECT_EQ(a, b)
EXPECT_FALSE
#define EXPECT_FALSE(args)
cylinder.h
Parse cylinder from xml string.


tesseract_urdf
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:02:07