@@ -218,6 +218,88 @@ TEST(UtilTest, ScopedName)
218
218
EXPECT_EQ (kNullEntity , gazebo::worldEntity (kNullEntity , ecm));
219
219
}
220
220
221
+ // ///////////////////////////////////////////////
222
+ TEST (UtilTest, EntitiesFromScopedName)
223
+ {
224
+ EntityComponentManager ecm;
225
+
226
+ // banana 1
227
+ // - orange 2
228
+ // - plum 3
229
+ // - grape 4
230
+ // - pear 5
231
+ // - plum 6
232
+ // - grape 7
233
+ // - pear 8
234
+ // - plum 9
235
+ // - pear 10
236
+ // - grape 11
237
+ // - pear 12
238
+ // - orange 13
239
+ // - orange 14
240
+ // - pear 15
241
+
242
+ auto createEntity = [&ecm](const std::string &_name, Entity _parent) -> Entity
243
+ {
244
+ auto res = ecm.CreateEntity ();
245
+ ecm.CreateComponent (res, components::Name (_name));
246
+ ecm.CreateComponent (res, components::ParentEntity (_parent));
247
+ return res;
248
+ };
249
+
250
+ auto banana1 = ecm.CreateEntity ();
251
+ ecm.CreateComponent (banana1, components::Name (" banana" ));
252
+
253
+ auto orange2 = createEntity (" orange" , banana1);
254
+ auto plum3 = createEntity (" plum" , orange2);
255
+ auto grape4 = createEntity (" grape" , plum3);
256
+ auto pear5 = createEntity (" pear" , grape4);
257
+ auto plum6 = createEntity (" plum" , pear5);
258
+ auto grape7 = createEntity (" grape" , banana1);
259
+ auto pear8 = createEntity (" pear" , grape7);
260
+ auto plum9 = createEntity (" plum" , pear8);
261
+ auto pear10 = createEntity (" pear" , plum9);
262
+ auto grape11 = createEntity (" grape" , banana1);
263
+ auto pear12 = createEntity (" pear" , grape11);
264
+ auto orange13 = createEntity (" orange" , pear12);
265
+ auto orange14 = createEntity (" orange" , orange13);
266
+ auto pear15 = createEntity (" pear" , grape11);
267
+
268
+ auto checkEntities = [&ecm](const std::string &_scopedName,
269
+ Entity _relativeTo, const std::unordered_set<Entity> &_result,
270
+ const std::string &_delim)
271
+ {
272
+ auto res = gazebo::entitiesFromScopedName (_scopedName, ecm, _relativeTo,
273
+ _delim);
274
+ EXPECT_EQ (_result.size (), res.size ()) << _scopedName;
275
+
276
+ for (auto it : _result)
277
+ {
278
+ EXPECT_NE (res.find (it), res.end ()) << it << " " << _scopedName;
279
+ }
280
+ };
281
+
282
+ checkEntities (" watermelon" , kNullEntity , {}, " ::" );
283
+ checkEntities (" banana" , kNullEntity , {banana1}, " ::" );
284
+ checkEntities (" orange" , kNullEntity , {orange2, orange13, orange14}, " :" );
285
+ checkEntities (" banana::orange" , kNullEntity , {orange2}, " ::" );
286
+ checkEntities (" banana::grape" , kNullEntity , {grape7, grape11}, " ::" );
287
+ checkEntities (" grape/pear" , kNullEntity , {pear5, pear8, pear12, pear15}, " /" );
288
+ checkEntities (" grape...pear...plum" , kNullEntity , {plum6, plum9}, " ..." );
289
+ checkEntities (
290
+ " banana::orange::plum::grape::pear::plum" , kNullEntity , {plum6}, " ::" );
291
+ checkEntities (
292
+ " banana::orange::kiwi::grape::pear::plum" , kNullEntity , {}, " ::" );
293
+ checkEntities (" orange+orange" , kNullEntity , {orange14}, " +" );
294
+ checkEntities (" orange" , banana1, {orange2}, " ::" );
295
+ checkEntities (" grape" , banana1, {grape7, grape11}, " ::" );
296
+ checkEntities (" orange" , orange2, {}, " ::" );
297
+ checkEntities (" orange" , orange13, {orange14}, " ::" );
298
+ checkEntities (" grape::pear::plum" , plum3, {plum6}, " ::" );
299
+ checkEntities (" pear" , grape11, {pear12, pear15}, " ==" );
300
+ checkEntities (" plum=pear" , pear8, {pear10}, " =" );
301
+ }
302
+
221
303
// ///////////////////////////////////////////////
222
304
TEST (UtilTest, EntityTypeId)
223
305
{
0 commit comments