tesseract_urdf_capsule_unit.cpp
Go to the documentation of this file.
3 #include <gtest/gtest.h>
4 #include <Eigen/Geometry>
6 
10 
11 TEST(TesseractURDFUnit, parse_capsule) // NOLINT
12 {
13  {
14  std::string str = R"(<tesseract:capsule radius="1" length="2" extra="0 0 0"/>)";
16  EXPECT_TRUE(runTest<tesseract_geometry::Capsule::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"(<tesseract:capsule radius="0.25" length="0.5" extra="0 0 0"/>)";
25  EXPECT_TRUE(runTest<tesseract_geometry::Capsule::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"(<tesseract:capsule radius="-1" length="2" extra="0 0 0"/>)";
34  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
36  }
37 
38  {
39  std::string str = R"(<tesseract:capsule radius="1" length="-2" extra="0 0 0"/>)";
41  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
43  }
44 
45  {
46  std::string str = R"(<tesseract:capsule radius="a" length="2"/>)";
48  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
50  }
51 
52  {
53  std::string str = R"(<tesseract:capsule radius="1" length="a"/>)";
55  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::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"(<tesseract:capsule radius="1 2" length="2 3"/>)";
62  // tesseract_geometry::Capsule::Ptr geom;
63  // auto status = runTest<tesseract_geometry::Capsule::Ptr>(geom, str, tesseract_urdf::CAPSULE_ELEMENT_NAME.data());
64  // EXPECT_FALSE(*status);
65  // EXPECT_FALSE(status->message().empty());
66  // }
67 
68  {
69  std::string str = R"(<tesseract:capsule radius="1"/>)";
71  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
73  }
74 
75  {
76  std::string str = R"(<tesseract:capsule length="2"/>)";
78  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
80  }
81 
82  {
83  std::string str = "<tesseract:capsule />";
85  EXPECT_FALSE(runTest<tesseract_geometry::Capsule::Ptr>(
87  }
88 }
89 
90 TEST(TesseractURDFUnit, write_capsule) // NOLINT
91 {
92  {
93  tesseract_geometry::Capsule::Ptr capsule = std::make_shared<tesseract_geometry::Capsule>(0.5, 1.0);
94  std::string text;
95  EXPECT_EQ(0, writeTest<tesseract_geometry::Capsule::Ptr>(capsule, &tesseract_urdf::writeCapsule, text));
96  EXPECT_NE(text, "");
97  }
98 
99  {
100  tesseract_geometry::Capsule::Ptr capsule = nullptr;
101  std::string text;
102  EXPECT_EQ(1, writeTest<tesseract_geometry::Capsule::Ptr>(capsule, &tesseract_urdf::writeCapsule, text));
103  EXPECT_EQ(text, "");
104  }
105 }
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
EXPECT_TRUE
#define EXPECT_TRUE(args)
tesseract_urdf_common_unit.h
EXPECT_NEAR
#define EXPECT_NEAR(a, b, prec)
TEST
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH TESSERACT_COMMON_IGNORE_WARNINGS_POP TEST(TesseractURDFUnit, parse_capsule)
Definition: tesseract_urdf_capsule_unit.cpp:11
TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_urdf::CAPSULE_ELEMENT_NAME
static constexpr std::string_view CAPSULE_ELEMENT_NAME
Definition: capsule.h:45
tesseract_urdf::parseCapsule
std::shared_ptr< tesseract_geometry::Capsule > parseCapsule(const tinyxml2::XMLElement *xml_element)
Parse a xml capsule element.
Definition: capsule.cpp:40
capsule.h
Parse capsule from xml string.
tesseract_geometry::Capsule::Ptr
std::shared_ptr< Capsule > Ptr
capsule.h
macros.h
EXPECT_EQ
#define EXPECT_EQ(a, b)
EXPECT_FALSE
#define EXPECT_FALSE(args)
tesseract_urdf::writeCapsule
tinyxml2::XMLElement * writeCapsule(const std::shared_ptr< const tesseract_geometry::Capsule > &capsule, tinyxml2::XMLDocument &doc)
Definition: capsule.cpp:52


tesseract_urdf
Author(s): Levi Armstrong
autogenerated on Thu Apr 24 2025 03:10:44