35 #include <gtest/gtest.h>
37 #define _GLIBCXX_DEBUG // Enable assertions in STL
44 sensor_msgs::PointCloud2 cloud_msg;
52 }, ::testing::ExitedWithCode(0),
"");
59 sensor_msgs::PointCloud2 cloud_msg_1, cloud_msg_2;
60 cloud_msg_1.height = n_points;
61 cloud_msg_1.width = 1;
64 cloud_msg_2 = cloud_msg_1;
67 float point_data_raw[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0};
68 std::vector<float> point_data(point_data_raw, point_data_raw + 3*n_points);
70 uint8_t color_data_raw[] = {40, 80, 120, 160, 200, 240, 20, 40, 60, 80, 100, 120};
71 std::vector<uint8_t> color_data(color_data_raw, color_data_raw + 3*n_points);
73 float *data =
reinterpret_cast<float*
>(&cloud_msg_1.data.front());
74 for(
size_t n=0, i=0; n<n_points; ++n) {
76 *(data++) = point_data[i];
79 uint8_t *bgr =
reinterpret_cast<uint8_t*
>(data++);
82 for(
size_t j = 0; j <= j_max; ++j)
83 *(bgr++) = color_data[3*n+(j_max - j)];
93 for(
size_t i=0; i<n_points; ++i, ++iter_x, ++iter_r, ++iter_g, ++iter_b) {
94 for(
size_t j=0; j<3; ++j)
95 iter_x[j] = point_data[j+3*i];
96 *iter_r = color_data[3*i];
97 *iter_g = color_data[3*i+1];
98 *iter_b = color_data[3*i+2];
111 for(; iter_const_1_x != iter_const_1_x.end(); ++i, ++iter_const_1_x, ++iter_const_2_x, ++iter_const_1_y, ++iter_const_2_y,
112 ++iter_const_1_z, ++iter_const_2_z, ++iter_const_1_r, ++iter_const_1_g, ++iter_const_1_b) {
113 EXPECT_EQ(*iter_const_1_x, *iter_const_2_x);
114 EXPECT_EQ(*iter_const_1_x, point_data[0+3*i]);
115 EXPECT_EQ(*iter_const_1_y, *iter_const_2_y);
116 EXPECT_EQ(*iter_const_1_y, point_data[1+3*i]);
117 EXPECT_EQ(*iter_const_1_z, *iter_const_2_z);
118 EXPECT_EQ(*iter_const_1_z, point_data[2+3*i]);
119 EXPECT_EQ(*iter_const_1_r, *iter_const_2_r);
120 EXPECT_EQ(*iter_const_1_r, color_data[3*i+0]);
121 EXPECT_EQ(*iter_const_1_g, *iter_const_2_g);
122 EXPECT_EQ(*iter_const_1_g, color_data[3*i+1]);
123 EXPECT_EQ(*iter_const_1_b, *iter_const_2_b);
124 EXPECT_EQ(*iter_const_1_b, color_data[3*i+2]);
128 iter_const_2_b = iter_const_2_b + 1;
130 EXPECT_FALSE(iter_const_1_y != iter_const_1_y.end());
131 EXPECT_FALSE(iter_const_1_z != iter_const_1_z.end());
132 EXPECT_FALSE(iter_const_1_r != iter_const_1_r.end());
133 EXPECT_FALSE(iter_const_1_g != iter_const_1_g.end());
134 EXPECT_FALSE(iter_const_1_b != iter_const_1_b.end());
135 EXPECT_FALSE(iter_const_2_x != iter_const_2_x.end());
136 EXPECT_FALSE(iter_const_2_y != iter_const_2_y.end());
137 EXPECT_FALSE(iter_const_2_z != iter_const_2_z.end());
138 EXPECT_FALSE(iter_const_2_r != iter_const_2_r.
end());
139 EXPECT_FALSE(iter_const_2_g != iter_const_2_g.
end());
140 EXPECT_FALSE(iter_const_2_b != iter_const_2_b.
end());
141 EXPECT_EQ(i, n_points);
144 int main(
int argc,
char** argv)
146 ::testing::InitGoogleTest(&argc, argv);
147 return RUN_ALL_TESTS();