aboutsummaryrefslogtreecommitdiff
path: root/tests/test_root_component.py
blob: 5e99ef16e1a6e5a35a87f65417aef60c9ce60e0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import unittest
import maya.cmds as cmds
import artv2.components.base_components.rig_asset as rig_asset
import artv2.components.root as root


def format_position(pos):
    return [float("{0:.3f}".format(pos[0])), float("{0:.3f}".format(pos[1])), float("{0:.3f}".format(pos[2]))]


class Root_Component_Tests(unittest.TestCase):
    """
    Class containing tests for hinge module creation and manipulation.
    """

    def _create_asset(self):
        new_asset = rig_asset.RigAsset()
        self.assertEquals(new_asset.name, "asset")
        self.assertEquals(new_asset.network_node, "asset_metadata")
        return new_asset

    def _create_root_inst(self):

        inst = root.Root()
        return inst

    def test_create_root(self):

        self._create_asset()
        arm_inst = self._create_root_inst()
        self.assertEquals(len(arm_inst.joint_mover.get_created_joints()), 1)

    def test_delete_root(self):

        self._create_asset()
        root_inst = self._create_root_inst()

        component_containers = root_inst.joint_mover.get_containers()
        guide_nodes = component_containers[1].getNodeList()
        utility_nodes = component_containers[2].getNodeList()

        root_inst.delete()
        self.assertFalse(cmds.objExists("master_metadata"))

        for each in guide_nodes:
            self.assertFalse(cmds.objExists(each.nodeName()))
        for each in utility_nodes:
            self.assertFalse(cmds.objExists(each.nodeName()))

    def test_bake_offsets(self):

        self._create_asset()
        root_inst = root.Root()
        cmds.setAttr("master_root_mover_offset.translateY", 30)

        pre_offset_position = format_position(cmds.xform("master_root_mover_offset", q=True, ws=True, t=True))
        pre_main_position = format_position(cmds.xform("master_root_mover", q=True, ws=True, t=True))
        self.assertNotEquals(pre_main_position, pre_offset_position)
        root_inst.joint_mover.bake_offsets()

        post_offset_position = format_position(cmds.xform("master_root_mover_offset", q=True, ws=True, t=True))
        post_main_position = format_position(cmds.xform("master_root_mover", q=True, ws=True, t=True))
        self.assertEquals(post_main_position, post_offset_position)

    def test_duplicate(self):

        self._create_asset()
        root_inst = root.Root()

        dupe1 = root_inst.duplicate()
        dupe2 = root_inst.duplicate()
        dupe3 = root_inst.duplicate()

        self.assertEquals(dupe1.suffix, "_01")
        self.assertEquals(dupe2.suffix, "_02")
        self.assertEquals(dupe3.suffix, "_03")