40 #ifndef PCL_TEST_MACROS
41 #define PCL_TEST_MACROS
64 template <
typename V1,
typename V2>
67 SCOPED_TRACE(
"EXPECT_EQ_VECTORS failed");
68 EXPECT_EQ (v1.size (), v2.size ());
69 size_t length = v1.size ();
70 for (
size_t i = 0; i < length; ++i)
71 EXPECT_EQ (v1[i], v2[i]);
74 template <
typename V1,
typename V2,
typename Scalar>
77 SCOPED_TRACE(
"EXPECT_NEAR_VECTORS failed");
78 EXPECT_EQ (v1.size (), v2.size ());
79 size_t length = v1.size ();
80 for (
size_t i = 0; i < length; ++i)
81 EXPECT_NEAR (v1[i], v2[i], epsilon);
87 template <
typename Po
int1T,
typename Po
int2T>
88 ::testing::AssertionResult
XYZEQ (
const char* expr1,
93 if ((p1).getVector3fMap ().cwiseEqual ((p2).getVector3fMap ()).all ())
94 return ::testing::AssertionSuccess ();
95 return ::testing::AssertionFailure ()
96 <<
"Value of: " << expr2 <<
".getVector3fMap ()" << std::endl
97 <<
" Actual: " << p2.getVector3fMap ().transpose () << std::endl
98 <<
"Expected: " << expr1 <<
".getVector3fMap ()" << std::endl
99 <<
"Which is: " << p1.getVector3fMap ().transpose ();
102 template <
typename Po
int1T,
typename Po
int2T>
103 ::testing::AssertionResult
XYZNear (
const char* expr1,
105 const char* abs_error_expr,
110 const Eigen::Vector3f diff = ((p1).getVector3fMap () -
111 (p2).getVector3fMap ()).cwiseAbs ();
112 if ((diff.array () < abs_error).all ())
113 return ::testing::AssertionSuccess ();
114 return ::testing::AssertionFailure ()
115 <<
"Some of the element-wise differences exceed " << abs_error_expr
116 <<
" (which evaluates to " << abs_error <<
")" << std::endl
117 <<
"Difference: " << diff.transpose () << std::endl
118 <<
" Value of: " << expr2 <<
".getVector3fMap ()" << std::endl
119 <<
" Actual: " << p2.getVector3fMap ().transpose () << std::endl
120 <<
" Expected: " << expr1 <<
".getVector3fMap ()" << std::endl
121 <<
" Which is: " << p1.getVector3fMap ().transpose ();
124 template <
typename Po
int1T,
typename Po
int2T>
125 ::testing::AssertionResult
NormalEQ (
const char* expr1,
130 if ((p1).getNormalVector3fMap ().cwiseEqual ((p2).getNormalVector3fMap ()).all ())
131 return ::testing::AssertionSuccess ();
132 return ::testing::AssertionFailure ()
133 <<
"Value of: " << expr2 <<
".getNormalVector3fMap ()" << std::endl
134 <<
" Actual: " << p2.getNormalVector3fMap ().transpose () << std::endl
135 <<
"Expected: " << expr1 <<
".getNormalVector3fMap ()" << std::endl
136 <<
"Which is: " << p1.getNormalVector3fMap ().transpose ();
139 template <
typename Po
int1T,
typename Po
int2T>
142 const char* abs_error_expr,
147 const Eigen::Vector3f diff = ((p1).getNormalVector3fMap () -
148 (p2).getNormalVector3fMap ()).cwiseAbs ();
149 if ((diff.array () < abs_error).all ())
150 return ::testing::AssertionSuccess ();
151 return ::testing::AssertionFailure ()
152 <<
"Some of the element-wise differences exceed " << abs_error_expr
153 <<
" (which evaluates to " << abs_error <<
")" << std::endl
154 <<
"Difference: " << diff.transpose () << std::endl
155 <<
" Value of: " << expr2 <<
".getNormalVector3fMap ()" << std::endl
156 <<
" Actual: " << p2.getNormalVector3fMap ().transpose () << std::endl
157 <<
" Expected: " << expr1 <<
".getNormalVector3fMap ()" << std::endl
158 <<
" Which is: " << p1.getNormalVector3fMap ().transpose ();
161 template <
typename Po
int1T,
typename Po
int2T>
162 ::testing::AssertionResult
RGBEQ (
const char* expr1,
167 if ((p1).getRGBVector3i ().cwiseEqual ((p2).getRGBVector3i ()).all ())
168 return ::testing::AssertionSuccess ();
169 return ::testing::AssertionFailure ()
170 <<
"Value of: " << expr2 <<
".getRGBVector3i ()" << std::endl
171 <<
" Actual: " << p2.getRGBVector3i ().transpose () << std::endl
172 <<
"Expected: " << expr1 <<
".getRGBVector3i ()" << std::endl
173 <<
"Which is: " << p1.getRGBVector3i ().transpose ();
176 template <
typename Po
int1T,
typename Po
int2T>
177 ::testing::AssertionResult
RGBAEQ (
const char* expr1,
182 if ((p1).getRGBAVector4i ().cwiseEqual ((p2).getRGBAVector4i ()).all ())
183 return ::testing::AssertionSuccess ();
184 return ::testing::AssertionFailure ()
185 <<
"Value of: " << expr2 <<
".getRGBAVector4i ()" << std::endl
186 <<
" Actual: " << p2.getRGBAVector4i ().transpose () << std::endl
187 <<
"Expected: " << expr1 <<
".getRGBAVector4i ()" << std::endl
188 <<
"Which is: " << p1.getRGBAVector4i ().transpose ();
199 #define EXPECT_XYZ_EQ(expected, actual) \
200 EXPECT_PRED_FORMAT2(::pcl::test::internal::XYZEQ, \
201 (expected), (actual))
205 #define ASSERT_XYZ_EQ(expected, actual) \
206 ASSERT_PRED_FORMAT2(::pcl::test::internal::XYZEQ, \
207 (expected), (actual))
211 #define EXPECT_XYZ_NEAR(expected, actual, abs_error) \
212 EXPECT_PRED_FORMAT3(::pcl::test::internal::XYZNear, \
213 (expected), (actual), abs_error)
217 #define ASSERT_XYZ_NEAR(expected, actual, abs_error) \
218 EXPECT_PRED_FORMAT3(::pcl::test::internal::XYZNear, \
219 (expected), (actual), abs_error)
223 #define EXPECT_NORMAL_EQ(expected, actual) \
224 EXPECT_PRED_FORMAT2(::pcl::test::internal::NormalEQ, \
225 (expected), (actual))
229 #define ASSERT_NORMAL_EQ(expected, actual) \
230 ASSERT_PRED_FORMAT2(::pcl::test::internal::NormalEQ, \
231 (expected), (actual))
236 #define EXPECT_NORMAL_NEAR(expected, actual, abs_error) \
237 EXPECT_PRED_FORMAT3(::pcl::test::internal::NormalNear, \
238 (expected), (actual), abs_error)
243 #define ASSERT_NORMAL_NEAR(expected, actual, abs_error) \
244 EXPECT_PRED_FORMAT3(::pcl::test::internal::NormalNear, \
245 (expected), (actual), abs_error)
249 #define EXPECT_RGB_EQ(expected, actual) \
250 EXPECT_PRED_FORMAT2(::pcl::test::internal::RGBEQ, \
251 (expected), (actual))
255 #define ASSERT_RGB_EQ(expected, actual) \
256 ASSERT_PRED_FORMAT2(::pcl::test::internal::RGBEQ, \
257 (expected), (actual))
261 #define EXPECT_RGBA_EQ(expected, actual) \
262 EXPECT_PRED_FORMAT2(::pcl::test::internal::RGBAEQ, \
263 (expected), (actual))
267 #define ASSERT_RGBA_EQ(expected, actual) \
268 ASSERT_PRED_FORMAT2(::pcl::test::internal::RGBAEQ, \
269 (expected), (actual))
::testing::AssertionResult NormalNear(const char *expr1, const char *expr2, const char *abs_error_expr, const Point1T &p1, const Point2T &p2, double abs_error)
::testing::AssertionResult RGBAEQ(const char *expr1, const char *expr2, const Point1T &p1, const Point2T &p2)
void EXPECT_EQ_VECTORS(const V1 &v1, const V2 &v2)
::testing::AssertionResult XYZEQ(const char *expr1, const char *expr2, const Point1T &p1, const Point2T &p2)
void EXPECT_NEAR_VECTORS(const V1 &v1, const V2 &v2, const Scalar &epsilon)
::testing::AssertionResult RGBEQ(const char *expr1, const char *expr2, const Point1T &p1, const Point2T &p2)
::testing::AssertionResult NormalEQ(const char *expr1, const char *expr2, const Point1T &p1, const Point2T &p2)
::testing::AssertionResult XYZNear(const char *expr1, const char *expr2, const char *abs_error_expr, const Point1T &p1, const Point2T &p2, double abs_error)