def test_aliased_attrs(self): """ """ test_node_mobj = om_util.get_mobj(self.test_node) # Make sure regular (custom) attributes are accessible normal_plug = om_util.get_mplug_of_mobj(test_node_mobj, self.long_name_attr) self.assertEqual(type(normal_plug), OpenMaya.MPlug) self.assertEqual(str(normal_plug), "{}.{}".format(self.test_node, self.long_name_attr)) # Check whether an aliased attribute is accessible aliased_plug = om_util.get_mplug_of_mobj(test_node_mobj, self.aliased_attr) self.assertEqual(type(aliased_plug), OpenMaya.MPlug) self.assertEqual(str(aliased_plug), "{}.{}".format(self.test_node, self.aliased_attr)) # Check whether an aliased attribute can still be found via its actual name as well. aliased_orig_plug = om_util.get_mplug_of_mobj(test_node_mobj, self.aliased_attr_orig) self.assertEqual(type(aliased_orig_plug), OpenMaya.MPlug) self.assertEqual(str(aliased_orig_plug), "{}.{}".format(self.test_node, self.aliased_attr)) # Check whether an attribute that doesn't exist returns None. bogus_plug = om_util.get_mplug_of_mobj(test_node_mobj, "someBogusName") self.assertIsNone(bogus_plug)
def test_plug(self): """ """ test_node_mobj = om_util.get_mobj(self.test_node) operator_mobj = om_util.get_mobj(self.test_operator) transform_attr = "translateX" parent_attr = "input3D" array_attr = "{}[0]".format(parent_attr) child_attr = "input3Dx" test_value = 7 # Test getting an mplug from a plug mplug = om_util.get_mplug_of_plug("{}.{}".format( self.test_operator, array_attr)) self.assertEqual(type(mplug), OpenMaya.MPlug) self.assertEqual(str(mplug), "{}.{}".format(self.test_operator, array_attr)) mplug = om_util.get_mplug_of_node_and_attr(self.test_operator, array_attr) self.assertEqual(type(mplug), OpenMaya.MPlug) self.assertEqual(str(mplug), "{}.{}".format(self.test_operator, array_attr)) self.assertEqual(om_util.is_valid_mplug(mplug), True) # Test attribute setting and getting om_util.set_mobj_attribute(test_node_mobj, transform_attr, test_value) queried_val = cmds.getAttr("{}.{}".format(self.test_node, transform_attr)) self.assertEqual(queried_val, test_value) self.assertEqual( om_util.get_attr_of_mobj(test_node_mobj, transform_attr), queried_val) # Test mplug query parent_plug = om_util.get_mplug_of_mobj(operator_mobj, parent_attr) self.assertEqual(type(parent_plug), OpenMaya.MPlug) self.assertEqual(str(parent_plug), "{}.{}".format(self.test_operator, parent_attr)) # Test array attribute access array_mplug_elements = om_util.get_array_mplug_elements(parent_plug) array_mplug_elements_as_str = [ str(var) for var in array_mplug_elements ] expected_array_plugs = [ "{}.{}[{}]".format(self.test_operator, parent_attr, var) for var in [0, 3] ] self.assertEqual(array_mplug_elements_as_str, expected_array_plugs) # Test array mplug access via pysical index mplug_by_index = str( om_util.get_array_mplug_by_index(parent_plug, 0, physical=True)) expected_plug = "{}.{}[0]".format(self.test_operator, parent_attr) self.assertEqual(mplug_by_index, expected_plug) mplug_by_index = str( om_util.get_array_mplug_by_index(parent_plug, 1, physical=True)) expected_plug = "{}.{}[3]".format(self.test_operator, parent_attr) self.assertEqual(mplug_by_index, expected_plug) mplug_by_index = om_util.get_array_mplug_by_index(parent_plug, 2, physical=True) expected_plug = None self.assertEqual(mplug_by_index, expected_plug) # Test array mplug access via logical index mplug_by_index = str( om_util.get_array_mplug_by_index(parent_plug, 0, physical=False)) expected_plug = "{}.{}[0]".format(self.test_operator, parent_attr) self.assertEqual(mplug_by_index, expected_plug) mplug_by_index = str( om_util.get_array_mplug_by_index(parent_plug, 1, physical=False)) expected_plug = "{}.{}[1]".format(self.test_operator, parent_attr) self.assertEqual(mplug_by_index, expected_plug) mplug_by_index = str( om_util.get_array_mplug_by_index(parent_plug, 3, physical=False)) expected_plug = "{}.{}[3]".format(self.test_operator, parent_attr) self.assertEqual(mplug_by_index, expected_plug) # Test child attribute access child_mplug = om_util.get_child_mplug(mplug, child_attr) expected_child_plug = "{}.{}.{}".format(self.test_operator, array_attr, child_attr) self.assertEqual(str(child_mplug), expected_child_plug) # Test parent attribute access parent_mplug = om_util.get_parent_mplug(child_mplug) self.assertEqual(str(parent_mplug), "{}.{}".format(self.test_operator, array_attr)) # Test children attributes access child_mplugs = om_util.get_child_mplugs(parent_mplug) expected_child_plugs = [ "{}.{}.input3D{}".format(self.test_operator, array_attr, var) for var in "xyz" ] self.assertEqual([str(var) for var in child_mplugs], expected_child_plugs)