3 #include <gtest/gtest.h>
4 #include <Eigen/Geometry>
12 TEST(TesseractURDFUnit, parse_material)
14 auto m = std::make_shared<tesseract_scene_graph::Material>(
"test_material");
15 m->color = Eigen::Vector4d(1, .5, .5, 1);
19 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
20 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
21 available_materials[
"test_material"] = m;
23 std::string str = R
"(<material name="test_material" extra="0 0 0">
24 <color rgba="1 .5 .5 1" extra="0 0 0"/>
25 <texture filename=")" +
26 m->texture_filename + R"("extra="0 0 0"/>
29 EXPECT_TRUE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
33 empty_available_materials,
36 EXPECT_TRUE(elem->color.isApprox(Eigen::Vector4d(1, .5, .5, 1), 1e-8));
41 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
42 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
43 available_materials[
"test_material"] = m;
45 std::string str = R
"(<material name="test_material">
46 <color rgba="1 .5 .5 1"/>
49 EXPECT_TRUE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
53 empty_available_materials,
56 EXPECT_TRUE(elem->color.isApprox(Eigen::Vector4d(1, .5, .5, 1), 1e-8));
61 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
62 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
63 available_materials[
"test_material"] = m;
65 std::string str = R
"(<material name="test_material"/>)";
67 EXPECT_TRUE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
74 EXPECT_TRUE(elem->color.isApprox(Eigen::Vector4d(1, .5, .5, 1), 1e-8));
79 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
80 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
81 available_materials[
"test_material"] = m;
83 std::string str = R
"(<material name="test_material" extra="0 0 0">
84 <color rgba="1 .5 .5 1" extra="0 0 0"/>
88 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
92 empty_available_materials,
97 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
98 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
99 available_materials[
"test_material"] = m;
101 std::string str = R
"(<material name="test_material">
105 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
109 empty_available_materials,
114 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
115 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
116 available_materials[
"test_material"] = m;
118 std::string str = R
"(<material />)";
120 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
129 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
130 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
131 available_materials[
"test_material"] = m;
133 std::string str = R
"(<material name="test_material"/>)";
135 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
139 empty_available_materials,
144 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
145 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
146 available_materials[
"test_material"] = m;
148 std::string str = R
"(<material name="test_material">
149 <color rgba="1 .5 .5 a"/>
150 <texture filename=")" +
151 m->texture_filename + R"("/>
154 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
158 empty_available_materials,
163 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
164 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
165 available_materials[
"test_material"] = m;
167 std::string str = R
"(<material name="test_material">
168 <color rgba="1 .5 a 1"/>
169 <texture filename=")" +
170 m->texture_filename + R"("/>
173 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
177 empty_available_materials,
182 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
183 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
184 available_materials[
"test_material"] = m;
186 std::string str = R
"(<material name="test_material">
187 <color rgba="1 a .5 1"/>
188 <texture filename=")" +
189 m->texture_filename + R"("/>
192 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
196 empty_available_materials,
201 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
202 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
203 available_materials[
"test_material"] = m;
205 std::string str = R
"(<material name="test_material">
206 <color rgba="a .5 .5 1"/>
207 <texture filename=")" +
208 m->texture_filename + R"("/>
211 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
215 empty_available_materials,
220 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
221 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
222 available_materials[
"test_material"] = m;
224 std::string str = R
"(<material name="test_material">
225 <color rgba="1 .5 .5 1 1"/>
226 <texture filename=")" +
227 m->texture_filename + R"("/>
230 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
234 empty_available_materials,
239 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> empty_available_materials;
240 std::unordered_map<std::string, tesseract_scene_graph::Material::Ptr> available_materials;
241 available_materials[
"test_material"] = m;
243 std::string str = R
"(<material name="test_material">
245 <texture filename=")" +
246 m->texture_filename + R"("/>
249 EXPECT_FALSE(runTest<tesseract_scene_graph::Material::Ptr>(elem,
253 empty_available_materials,
258 TEST(TesseractURDFUnit, write_material)
262 material->color = Eigen::Vector4d(1.0, 0.5, 0.5, 1.0);
267 std::string expected =
268 R
"(<material name="unobtainium">
269 <color rgba="1 0.5 0.5 1"/>
277 material->color = Eigen::Vector4d(1.0, 0.5, 0.5, 1.0);
278 material->texture_filename =
"/tmp/texture.txt";
283 std::string expected =
284 R
"(<material name="unobtainium">
285 <texture filename="/tmp/texture.txt"/>
286 <color rgba="1 0.5 0.5 1"/>