def test_link_iterator(self): model_shapes = iDynTree.ModelSolidShapes() model_shapes.resize(2) # Create one mesh for link 0. mesh = iDynTree.ExternalMesh() mesh.name = "mesh_l0" model_shapes[0].append(mesh) # Create two meshes for link 1. mesh = iDynTree.ExternalMesh() mesh.name = "mesh_l1_1" model_shapes[1].append(mesh) mesh = iDynTree.ExternalMesh() mesh.name = "mesh_l1_2" model_shapes[1].append(mesh) # Test that the iterator iterates once on the first link. i = 0 for m in model_shapes[0]: i += 1 self.assertTrue(m.name) self.assertEqual(i, 1) # Test that the iterator iterates twice on the first link. i = 0 for m in model_shapes[1]: i += 1 self.assertTrue(m.name) self.assertEqual(i, 2)
def test_clone(self): mesh = iDynTree.ExternalMesh() mesh.name = "a_name" mesh_clone = mesh.clone() mesh_clone.name = "cloned_name" self.assertEqual(mesh_clone.name, "cloned_name") self.assertEqual(mesh.name, "a_name")
def test_mesh_scale(self): mesh = iDynTree.ExternalMesh() scale = iDynTree.Vector3() scale[0] = 1 scale[1] = 2 scale[2] = 3 mesh.scale = scale self.assertEqual(list(mesh.scale), list(scale))
def test_add_mesh(self): model_shapes = iDynTree.ModelSolidShapes() model_shapes.resize(2) mesh = iDynTree.ExternalMesh() mesh.name = "a_mesh" model_shapes[0].append(mesh) self.assertEqual(len(model_shapes[1]), 0) self.assertEqual(model_shapes[0, 0].name, "a_mesh")
def test_cast_to_wrong_object_raises(self): sphere = iDynTree.Sphere() sphere.radius = 3.14 mesh = iDynTree.ExternalMesh() mesh.filename = "a_filename" with self.assertRaises(ValueError): sphere.as_external_mesh() with self.assertRaises(ValueError): mesh.as_sphere()
def test_clear_on_model_shapes(self): model_shapes = iDynTree.ModelSolidShapes() model_shapes.resize(2) mesh = iDynTree.ExternalMesh() mesh.name = "a_mesh" model_shapes[0].append(mesh) self.assertEqual(len(model_shapes), 2) model_shapes.clear() self.assertEqual(len(model_shapes), 0)
def test_overwrite_shape_on_model_list(self): model_shapes = iDynTree.ModelSolidShapes() model_shapes.resize(1) mesh = iDynTree.ExternalMesh() mesh.name = "a_mesh" model_shapes[0].append(mesh) # Now change the shape in [0][0] mesh.name = "a_different_mesh" model_shapes[0, 0] = mesh self.assertEqual(model_shapes[0, 0].name, "a_different_mesh")
def test_cast_to_correct_object_is_ok(self): sphere = iDynTree.Sphere() sphere.radius = 3.14 mesh = iDynTree.ExternalMesh() mesh.filename = "a_filename" to_sphere = sphere.as_sphere() self.assertIsNotNone(to_sphere) self.assertEqual(to_sphere.radius, 3.14) to_mesh = mesh.as_external_mesh() self.assertIsNotNone(to_mesh) self.assertEqual(to_mesh.filename, "a_filename")
def test_transform(self): position = iDynTree.Position(1, 2, 3) rotation = iDynTree.Rotation(0, 0, 1, 1, 0, 0, 0, 1, 0) transform = iDynTree.Transform(rotation, position) mesh = iDynTree.ExternalMesh() mesh.link_H_geometry = transform self.assertEqual(list(mesh.link_H_geometry.position), list(position)) for r, c in itertools.product(range(3), range(3)): self.assertEqual(mesh.link_H_geometry.rotation[r, c], rotation[r, c])
def test_model_shapes(self): model = iDynTree.Model() link1 = iDynTree.Link() link2 = iDynTree.Link() model.add_link("link1", link1) model.add_link("link2", link2) self.assertEqual(len(model.visual_solid_shapes), model.get_nr_of_links()) self.assertEqual(len(model.collision_solid_shapes), model.get_nr_of_links()) # Append a shape to test that the objects are writable. mesh = iDynTree.ExternalMesh() mesh.name = "a_mesh" old_len = len(model.visual_solid_shapes[0]) model.visual_solid_shapes[0].append(mesh) self.assertEqual(len(model.visual_solid_shapes[0]), old_len + 1)
def test_mesh_filename(self): mesh = iDynTree.ExternalMesh() mesh.filename = "a_filename" self.assertEqual(mesh.filename, "a_filename")
def test_material(self): mesh = iDynTree.ExternalMesh() mesh.material = iDynTree.Material("a_material") self.assertEqual(mesh.material.name, "a_material")