-
Notifications
You must be signed in to change notification settings - Fork 222
Expand file tree
/
Copy pathtestComponentCreatorCreateMultiVariantsComponentFromNodes.py
More file actions
108 lines (91 loc) · 4.82 KB
/
Copy pathtestComponentCreatorCreateMultiVariantsComponentFromNodes.py
File metadata and controls
108 lines (91 loc) · 4.82 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import unittest
import fixturesUtils
import mayaUsd.lib
import mayaUsd.ufe
import mayaUsd_createStageWithNewLayer
from maya import cmds
from pxr import Sdf, Usd
import ufe
from maya.internal.ufeSupport import ufeCmdWrapper as ufeCmd
from testComponentCreatorBase import _ComponentCreatorTestBase
class CreateMultiVariantsComponentFromNodesTestCase(_ComponentCreatorTestBase, unittest.TestCase):
"""
Tests for create_multi_variants_component_from_nodes.
"""
@classmethod
def setUpClass(cls):
fixturesUtils.readOnlySetUpClass(__file__, initializeStandalone=False)
def setUp(self):
self._setUpCC()
def testEmptyNodesIsNoOp(self):
"""create_multi_variants_component_from_nodes([]) must not create any proxy shape."""
from usd_component_creator_plugin import create_multi_variants_component_from_nodes
before = self._snapshotProxyShapes()
create_multi_variants_component_from_nodes([])
self.assertEqual(self._snapshotProxyShapes(), before,
"No proxy shape should be created for an empty node list")
def testVariantCount(self):
"""Two input nodes should produce exactly two variants in the first variant set."""
from usd_component_creator_plugin import create_multi_variants_component_from_nodes
cmds.polyCube(name='pCubeA')
cmds.polyCube(name='pCubeB')
paths = [cmds.ls(n, long=True)[0] for n in ('pCubeA', 'pCubeB')]
before = self._snapshotProxyShapes()
create_multi_variants_component_from_nodes(paths)
proxy = self._findNewProxyShape(before)
self.assertIsNotNone(proxy)
stage = mayaUsd.ufe.getStage(proxy)
desc = self._getDescFromStage(stage)
self.assertIsNotNone(desc, 'Could not construct ComponentDescription from stage')
first_vs = self._findVariantSetByName(desc, 'variant_set_1')
self.assertEqual(len(first_vs.GetVariants()), 2,
"Two nodes must produce exactly two variants")
def testTargetedVariantIsDefault(self):
"""After creation the targeted variant must be the default variant."""
import AdskUsdComponentCreator
from usd_component_creator_plugin import create_multi_variants_component_from_nodes
cmds.polyCube(name='ZebraNode')
cmds.polyCube(name='AppleNode')
paths = [cmds.ls(n, long=True)[0] for n in ('ZebraNode', 'AppleNode')]
before = self._snapshotProxyShapes()
create_multi_variants_component_from_nodes(paths)
proxy = self._findNewProxyShape(before)
self.assertIsNotNone(proxy)
desc = self._getActiveDesc()
if desc is None:
stage = mayaUsd.ufe.getStage(proxy)
desc = self._getDescFromStage(stage)
self.assertIsNotNone(desc, 'Could not obtain ComponentDescription')
first_vs = self._findVariantSetByName(desc, 'variant_set_1')
default_name = first_vs.default_variant
self.assertTrue(default_name)
default_var_desc = first_vs.GetVariantDescription(default_name)
self.assertIsNotNone(default_var_desc)
self.assertTrue(
AdskUsdComponentCreator.ComponentAPI.IsVariantTarget(
desc, [first_vs, default_var_desc]),
"Default variant must be targeted after create_multi_variants_component_from_nodes")
def testDefaultIsAlphabeticallyFirst(self):
"""With three nodes the alphabetically-first name should be the default variant."""
import AdskUsdComponentCreator
from usd_component_creator_plugin import create_multi_variants_component_from_nodes
for name in ('MangoNode', 'AvocadoNode', 'KiwiNode'):
cmds.polyCube(name=name)
paths = [cmds.ls(n, long=True)[0] for n in ('MangoNode', 'AvocadoNode', 'KiwiNode')]
before = self._snapshotProxyShapes()
create_multi_variants_component_from_nodes(paths)
proxy = self._findNewProxyShape(before)
self.assertIsNotNone(proxy)
stage = mayaUsd.ufe.getStage(proxy)
desc = self._getDescFromStage(stage)
self.assertIsNotNone(desc, 'Could not construct ComponentDescription from stage')
first_vs = self._findVariantSetByName(desc, 'variant_set_1')
self.assertEqual(len(first_vs.GetVariants()), 3, "Three nodes → three variants")
opts = AdskUsdComponentCreator.Options()
opts.Validate()
expected_name = AdskUsdComponentCreator.GenerateVariantNameFromObjectName(
opts, 'AvocadoNode', ['AvocadoNode'], [])
self.assertEqual(first_vs.default_variant, expected_name,
"AvocadoNode is alphabetically first and must be the default variant")
if __name__ == '__main__':
fixturesUtils.runTests(globals())