MCPcopy Create free account
hub / github.com/google-deepmind/dm_control / testAttach

Method testAttach

dm_control/mjcf/element_test.py:333–448  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

331 self.assertNotIn('name', submujoco.worldbody.to_xml_string(self_only=True))
332
333 def testAttach(self):
334 mujoco = parser.from_path(_TEST_MODEL_XML)
335 mujoco.model = 'model'
336
337 submujoco = copy.copy(mujoco)
338 submujoco.model = 'submodel'
339
340 subsubmujoco = copy.copy(mujoco)
341 subsubmujoco.model = 'subsubmodel'
342
343 with self.assertRaisesRegex(ValueError, 'Cannot merge a model to itself'):
344 mujoco.attach(mujoco)
345
346 attachment_site = submujoco.find('site', 'attachment')
347 attachment_site.attach(subsubmujoco)
348 subsubmodel_frame = submujoco.find('attachment_frame', 'subsubmodel')
349 for attribute_name in ('pos', 'axisangle', 'xyaxes', 'zaxis', 'euler'):
350 np.testing.assert_array_equal(
351 getattr(subsubmodel_frame, attribute_name),
352 getattr(attachment_site, attribute_name))
353 self._test_properties(subsubmodel_frame,
354 parent=attachment_site.parent, root=submujoco)
355 self.assertEqual(
356 subsubmodel_frame.to_xml_string().split('\n')[0],
357 '<body '
358 'pos="0.10000000000000001 0.10000000000000001 0.10000000000000001" '
359 'quat="0 1 0 0" '
360 'name="subsubmodel/">')
361 self.assertEqual(
362 subsubmodel_frame.to_xml_string(precision=5).split('\n')[0],
363 '<body '
364 'pos="0.1 0.1 0.1" '
365 'quat="0 1 0 0" '
366 'name="subsubmodel/">')
367 self.assertEqual(subsubmodel_frame.all_children(),
368 subsubmujoco.worldbody.all_children())
369
370 with self.assertRaisesRegex(ValueError, 'already attached elsewhere'):
371 mujoco.attach(subsubmujoco)
372
373 with self.assertRaisesRegex(ValueError, 'Expected a mjcf.RootElement'):
374 mujoco.attach(submujoco.contact)
375
376 submujoco.option.flag.gravity = 'enable'
377 with self.assertRaisesRegex(
378 ValueError, 'Conflicting values for attribute `gravity`'):
379 mujoco.attach(submujoco)
380 submujoco.option.flag.gravity = 'disable'
381
382 mujoco.attach(submujoco)
383 self.assertEqual(subsubmujoco.parent_model, submujoco)
384 self.assertEqual(submujoco.parent_model, mujoco)
385 self.assertEqual(subsubmujoco.root_model, mujoco)
386 self.assertEqual(submujoco.root_model, mujoco)
387
388 self.assertEqual(submujoco.full_identifier, 'submodel/')
389 self.assertEqual(subsubmujoco.full_identifier, 'submodel/subsubmodel/')
390

Callers

nothing calls this directly

Calls 8

_test_propertiesMethod · 0.95
assertEqualMethod · 0.80
replaceMethod · 0.80
copyMethod · 0.45
attachMethod · 0.45
findMethod · 0.45
to_xml_stringMethod · 0.45
all_childrenMethod · 0.45

Tested by

no test coverage detected