def testPartialConnectionSerialisation( self ) : s = Gaffer.SplineDefinitionff( ( ( 0, 0 ), ( 0.2, 0.3 ), ( 0.4, 0.9 ), ( 1, 1 ), ), Gaffer.SplineDefinitionInterpolation.CatmullRom ) script = Gaffer.ScriptNode() script["n"] = Gaffer.Node() script["n"]["user"]["s"] = Gaffer.SplineffPlug( defaultValue=s, flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) script["n"]["user"]["x"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) script["n"]["user"]["y"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) script["n"]["user"]["s"].pointXPlug( 0 ).setInput( script["n"]["user"]["x"] ) script["n"]["user"]["s"].pointYPlug( 2 ).setInput( script["n"]["user"]["y"] ) def assertConnection( script ) : self.assertTrue( script["n"]["user"]["s"].getInput() is None ) self.assertTrue( script["n"]["user"]["s"]["interpolation"].getInput() is None ) for i in range( 0, 4 ) : if i == 0 : self.assertTrue( script["n"]["user"]["s"].pointXPlug( i ).getInput().isSame( script["n"]["user"]["x"] ) ) else : self.assertTrue( script["n"]["user"]["s"].pointXPlug( i ).getInput() is None ) if i == 2 : self.assertTrue( script["n"]["user"]["s"].pointYPlug( i ).getInput().isSame( script["n"]["user"]["y"] ) ) else : self.assertTrue( script["n"]["user"]["s"].pointYPlug( i ).getInput() is None ) assertConnection( script ) script2 = Gaffer.ScriptNode() script2.execute( script.serialise() ) assertConnection( script2 )
def testReadOnlySerialisation(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = GafferImage.AtomicFormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["p"].setValue( GafferImage.Format(IECore.Box2i(IECore.V2i(0), IECore.V2i(10)), 2.0)) s["n"]["p"].setFlags(Gaffer.Plug.Flags.ReadOnly, True) s2 = Gaffer.ScriptNode() s2.execute(s.serialise()) self.assertEqual( s2["n"]["p"].getValue(), GafferImage.Format(IECore.Box2i(IECore.V2i(0), IECore.V2i(10)), 2.0)) self.assertTrue(s2["n"]["p"].getFlags(Gaffer.Plug.Flags.ReadOnly))
def testPlugFlagsChangedSignal( self ) : n = Gaffer.Node() n["p"] = Gaffer.Plug() cs = GafferTest.CapturingSlot( n.plugFlagsChangedSignal() ) self.assertEqual( len( cs ), 0 ) n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, True ) self.assertEqual( len( cs ), 1 ) self.failUnless( cs[0][0].isSame( n["p"] ) ) # second time should have no effect because they're the same n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, True ) self.assertEqual( len( cs ), 1 ) n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, False ) self.assertEqual( len( cs ), 2 ) self.failUnless( cs[1][0].isSame( n["p"] ) )
def testSerialiseDynamicBoolPlugs(self): n = Gaffer.Node() n["p1"] = Gaffer.BoolPlug(defaultValue=True, flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) n["p1"].setValue(False) s = Gaffer.ScriptNode() s["n"] = n ss = s.serialise() s = Gaffer.ScriptNode() s.execute(ss) self.assertEqual(s["n"]["p1"].defaultValue(), True) self.assertEqual(s["n"]["p1"].getValue(), False)
def testAddNoduleWithInputConnection( self ) : script = Gaffer.ScriptNode() script["n"] = Gaffer.Node() script["n"]["in"] = Gaffer.Plug() script["n"]["out"] = Gaffer.Plug( direction = Gaffer.Plug.Direction.Out ) script["n"]["out"].setInput( script["n"]["in"] ) Gaffer.Metadata.registerValue( script["n"]["out"], "nodule:type", "" ) g = GafferUI.GraphGadget( script ) self.assertTrue( g.nodeGadget( script["n"] ).nodule( script["n"]["out"] ) is None ) self.assertTrue( g.connectionGadget( script["n"]["out"] ) is None ) Gaffer.Metadata.registerValue( script["n"]["out"], "nodule:type", "GafferUI::StandardNodule" ) self.assertTrue( g.nodeGadget( script["n"] ).nodule( script["n"]["out"] ) is not None ) self.assertTrue( g.connectionGadget( script["n"]["out"] ) is None )
def testPlugValueWidgetAccess(self): n = Gaffer.Node() n["c"] = Gaffer.CompoundPlug() n["c"]["i"] = Gaffer.IntPlug() n["c"]["s"] = Gaffer.StringPlug() u = GafferUI.StandardNodeUI(n) self.assertTrue( isinstance(u.plugValueWidget(n["c"]), GafferUI.PlugValueWidget)) self.assertTrue(u.plugValueWidget(n["c"]).getPlug().isSame(n["c"])) self.assertEqual(u.plugValueWidget(n["c"]["i"]), None) self.assertTrue( isinstance(u.plugValueWidget(n["c"]["i"], lazy=False), GafferUI.PlugValueWidget)) self.assertTrue( u.plugValueWidget(n["c"]["i"]).getPlug().isSame(n["c"]["i"]))
def testSerialisationOfMeshPrimitives( self ) : # right now we can only serialise types which define __repr__, but that # isn't defined for all cortex types. this test should pass when we get round # to defining it for MeshPrimitives - we should do the other primitives at the # same time, obviously. s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["t"] = Gaffer.ObjectPlug( "hello", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, defaultValue = IECore.MeshPrimitive.createPlane( IECore.Box2f( IECore.V2f( 0 ), IECore.V2f( 10 ) ) ) ) s["n"]["t"].setValue( IECore.MeshPrimitive.createPlane( IECore.Box2f( IECore.V2f( 0 ), IECore.V2f( 1 ) ) ) ) se = s.serialise() s2 = Gaffer.ScriptNode() s2.execute( se ) self.assertEqual( s["n"]["t"].defaultValue(), s2["n"]["t"].defaultValue() ) self.assertEqual( s["n"]["t"].getValue(), s2["n"]["t"].getValue() )
def testAcquire(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.IntPlug() # hold a reference to the ScriptWindow # to make sure it stays alive sw = GafferUI.ScriptWindow.acquire(s) w = GafferUI.PlugValueWidget.acquire(s["n"]["p"]) self.assertTrue(isinstance(w, GafferUI.NumericPlugValueWidget)) self.assertTrue(w.getPlug().isSame(s["n"]["p"])) self.assertTrue(GafferUI.PlugValueWidget.acquire(s["n"]["p"]) is w) pw = GafferUI.PlugWidget.acquire(s["n"]["p"]) self.assertTrue(isinstance(pw, GafferUI.PlugWidget)) self.assertTrue(pw.plugValueWidget() is w) self.assertTrue(GafferUI.PlugWidget.acquire(s["n"]["p"]) is pw)
def testComparisonIsNotAssignment(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["user"]["o"] = Gaffer.BoolPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() s["e"].setExpression("""parent.n.user.o = parent.n.user.i == 2;""", "OSL") self.assertTrue(s["n"]["user"]["i"].getInput() is None) self.assertFalse(s["n"]["user"]["o"].getValue()) s["n"]["user"]["i"].setValue(2) self.assertTrue(s["n"]["user"]["o"].getValue())
def testFactory( self ) : node = GafferTest.AddNode() self.assertTrue( GafferUI.View.create( node["sum"] ) is None ) # check that we can make our own view and register it for the node GafferUI.View.registerView( GafferTest.AddNode, "sum", self.MyView ) view = GafferUI.View.create( node["sum"] ) self.assertTrue( isinstance( view, self.MyView ) ) self.assertTrue( view["in"].getInput().isSame( node["sum"] ) ) # and check that that registration leaves other nodes alone n = Gaffer.Node() n["sum"] = Gaffer.IntPlug( direction = Gaffer.Plug.Direction.Out ) self.assertTrue( GafferUI.View.create( n["sum"] ) is None )
def testAnimationWithinAReference(self): s = Gaffer.ScriptNode() s["b"] = Gaffer.Box() s["b"]["n"] = Gaffer.Node() s["b"]["n"] = GafferTest.AddNode() Gaffer.PlugAlgo.promote(s["b"]["n"]["op1"]) Gaffer.PlugAlgo.promote(s["b"]["n"]["sum"]) self.assertTrue(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["op2"])) op2Curve = Gaffer.Animation.acquire(s["b"]["n"]["op2"]) # Cannot promote an animated plug, because it has an input. self.assertFalse(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["op2"])) op2Curve.addKey(Gaffer.Animation.Key(0, 0, Gaffer.Animation.Type.Step)) op2Curve.addKey(Gaffer.Animation.Key(1, 1, Gaffer.Animation.Type.Step)) with Gaffer.Context() as c: self.assertEqual(s["b"]["sum"].getValue(), 0) c.setTime(1) self.assertEqual(s["b"]["sum"].getValue(), 1) fileName = self.temporaryDirectory() + "/reference.grf" s["b"].exportForReference(fileName) s["r"] = Gaffer.Reference() s["r"].load(fileName) with Gaffer.Context() as c: self.assertEqual(s["r"]["sum"].getValue(), 0) c.setTime(1) self.assertEqual(s["r"]["sum"].getValue(), 1) s["r"]["op1"].setValue(2) with Gaffer.Context() as c: self.assertEqual(s["r"]["sum"].getValue(), 2) c.setTime(1) self.assertEqual(s["r"]["sum"].getValue(), 3)
def testUndoAcquire(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) self.assertEqual(len(s.children(Gaffer.Node)), 1) with Gaffer.UndoScope(s): curve = Gaffer.Animation.acquire(s["n"]["user"]["f"]) self.assertEqual(len(s.children(Gaffer.Node)), 2) s.undo() self.assertEqual(len(s.children(Gaffer.Node)), 1) s.redo() self.assertEqual(len(s.children(Gaffer.Node)), 2)
def testPromoteDynamicColorPlugAndSerialise(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["c"] = Gaffer.Color3fPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) b = Gaffer.Box.create(s, Gaffer.StandardSet([s["n"]])) b.promotePlug(b["n"]["c"]) ss = s.serialise() s = Gaffer.ScriptNode() s.execute(ss) self.assertTrue(isinstance(s["Box"]["user"]["n_c"], Gaffer.Color3fPlug)) self.assertTrue(s["Box"]["n"]["c"].getInput().isSame( s["Box"]["user"]["n_c"]))
def testContext(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.IntPlug() l = GafferUI.PlugLayout(s["n"]) self.assertTrue(l.getContext().isSame(s.context())) self.assertTrue( l.plugValueWidget(s["n"]["p"], lazy=False).getContext().isSame(s.context())) c = Gaffer.Context() l.setContext(c) self.assertTrue(l.getContext().isSame(c)) self.assertTrue(l.plugValueWidget(s["n"]["p"]).getContext().isSame(c)) l = GafferUI.PlugLayout(s) self.assertTrue(l.getContext().isSame(s.context()))
def testFlagsNeverSerialisedAsAll(self): # it's a terrible idea to serialise a set of flags that happen to be All # as All, rather than as the or-ing of the specific flags, because when new # flags are introduced in the future (and default to off) they will suddenly # pop on when loading old files. s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.Plug(flags=Gaffer.Plug.Flags.All) ss = s.serialise() self.failIf("All" in ss) s = Gaffer.ScriptNode() s.execute(ss) self.assertEqual(s["n"]["p"].getFlags(), Gaffer.Plug.Flags.All)
def testPromoteColor(self): s = Gaffer.ScriptNode() s["b"] = Gaffer.Box() s["b"]["n"] = Gaffer.Node() s["b"]["n"]["c"] = Gaffer.Color3fPlug() s["b"]["n"]["c"].setValue(IECore.Color3f(1, 0, 1)) self.assertTrue(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["c"])) self.assertFalse(Gaffer.PlugAlgo.isPromoted(s["b"]["n"]["c"])) p = Gaffer.PlugAlgo.promote(s["b"]["n"]["c"]) self.assertTrue(isinstance(p, Gaffer.Color3fPlug)) self.assertTrue(s["b"]["n"]["c"].getInput().isSame(p)) self.assertTrue(s["b"]["n"]["c"]["r"].getInput().isSame(p["r"])) self.assertTrue(s["b"]["n"]["c"]["g"].getInput().isSame(p["g"])) self.assertTrue(s["b"]["n"]["c"]["b"].getInput().isSame(p["b"])) self.assertEqual(p.getValue(), IECore.Color3f(1, 0, 1))
def testSectionQueries(self): n = Gaffer.Node() n["user"]["a"] = Gaffer.IntPlug() n["user"]["b"] = Gaffer.IntPlug() n["user"]["c"] = Gaffer.IntPlug() self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]), [""]) Gaffer.Metadata.registerValue(n["user"]["a"], "layout:section", "A") Gaffer.Metadata.registerValue(n["user"]["b"], "layout:section", "B") Gaffer.Metadata.registerValue(n["user"]["c"], "layout:section", "C") self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]), ["A", "B", "C"]) Gaffer.Metadata.registerValue(n["user"]["a"], "layout:index", 3) self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]), ["B", "C", "A"])
def testYDrivingX(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["v"] = Gaffer.V2fPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() s["e"].setExpression( 'parent["n"]["user"]["v"]["x"] = parent["n"]["user"]["v"]["y"] * 2' ) s["n"]["user"]["v"]["y"].setValue(2) self.assertEqual(s["n"]["user"]["v"]["x"].getValue(), 4) s2 = Gaffer.ScriptNode() s2.execute(s.serialise()) self.assertEqual(s2["n"]["user"]["v"]["x"].getValue(), 4)
def testDisabledShaderPassesThroughExternalValue( self ) : n1 = Gaffer.Node() n1["user"]["v"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) n1["user"]["v"].setValue( IECore.V3f( 12, 11, 10 ) ) n2 = GafferOSL.OSLShader() n2.loadShader( "Maths/VectorAdd" ) n2["parameters"]["a"].setInput( n1["user"]["v"] ) n3 = GafferOSL.OSLShader() n3.loadShader( "Maths/VectorAdd" ) n3["parameters"]["a"].setInput( n2["parameters"]["a"] ) n2["enabled"].setValue( False ) network = n3.attributes()["osl:shader"] self.assertEqual( len( network ), 1 ) self.assertEqual( network[0].parameters["a"].value, IECore.V3f( 12, 11, 10 ) )
def testReplaceFloatWithInt(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() s["e"].setExpression('parent["n"]["user"]["f"] = 10') self.assertEqual(s["n"]["user"]["f"].getValue(), 10) self.assertEqual(s["n"]["user"]["i"].getValue(), 0) s["e"].setExpression('parent["n"]["user"]["i"] = 10') self.assertEqual(s["n"]["user"]["f"].getValue(), 0) self.assertEqual(s["n"]["user"]["i"].getValue(), 10)
def testSetExpressionShortcuts(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() cs = GafferTest.CapturingSlot(s["e"].expressionChangedSignal()) s["e"].setExpression('parent["n"]["user"]["i"] = 10') self.assertEqual(len(cs), 1) s["e"].setExpression('parent["n"]["user"]["i"] = 10') self.assertEqual(len(cs), 1) s["e"].setExpression('parent["n"]["user"]["i"] = 20') self.assertEqual(len(cs), 2)
def testReadOnlySerialisation(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.Plug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["p2"] = Gaffer.Plug(direction=Gaffer.Plug.Direction.Out, flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["p"].setInput(s["n"]["p2"]) s["n"]["p"].setFlags(Gaffer.Plug.Flags.ReadOnly, True) ss = s.serialise() s2 = Gaffer.ScriptNode() s2.execute(ss) self.assertTrue(s2["n"]["p"].getInput().isSame(s2["n"]["p2"])) self.assertEqual(s2["n"]["p"].getFlags(Gaffer.Plug.Flags.ReadOnly), True)
def testChangeNoduleType(self): n = Gaffer.Node() n["p1"] = Gaffer.Plug() n["p2"] = Gaffer.Plug() g = GafferUI.StandardNodeGadget(n) n1 = g.nodule(n["p1"]) n2 = g.nodule(n["p2"]) self.assertTrue(isinstance(n1, GafferUI.StandardNodule)) self.assertTrue(isinstance(n2, GafferUI.StandardNodule)) Gaffer.Metadata.registerValue(n["p1"], "nodule:type", "GafferUI::CompoundNodule") self.assertTrue(isinstance(g.nodule(n["p1"]), GafferUI.CompoundNodule)) self.assertTrue(g.nodule(n["p2"]).isSame(n2)) self.assertTrue(n1.parent() is None)
def testChildPropagationToOutputPlugs( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["in"] = Gaffer.Plug() s["n"]["out"] = Gaffer.Plug( direction = Gaffer.Plug.Direction.Out ) s["n"]["out"].setInput( s["n"]["in"] ) def assertPreconditions() : self.assertEqual( s["n"]["in"].keys(), [] ) self.assertEqual( s["n"]["out"].keys(), [] ) self.assertTrue( s["n"]["out"].getInput().isSame( s["n"]["in"] ) ) def assertPostconditions() : self.assertEqual( s["n"]["in"].keys(), [ "i", "f" ] ) self.assertEqual( s["n"]["out"].keys(), [ "i", "f" ] ) self.assertTrue( isinstance( s["n"]["out"]["i"], Gaffer.IntPlug ) ) self.assertTrue( s["n"]["out"]["i"].direction(), Gaffer.Plug.Direction.Out ) self.assertTrue( s["n"]["out"]["i"].getInput().isSame( s["n"]["in"]["i"] ) ) self.assertTrue( s["n"]["out"].getInput().isSame( s["n"]["in"] ) ) self.assertTrue( isinstance( s["n"]["out"]["f"], Gaffer.FloatPlug ) ) self.assertTrue( s["n"]["out"]["f"].direction(), Gaffer.Plug.Direction.Out ) self.assertTrue( s["n"]["out"]["f"].getInput().isSame( s["n"]["in"]["f"] ) ) assertPreconditions() with Gaffer.UndoScope( s ) : s["n"]["in"].addChild( Gaffer.IntPlug( "i" ) ) s["n"]["in"].addChild( Gaffer.FloatPlug( "f" ) ) assertPostconditions() s.undo() assertPreconditions() s.redo() assertPostconditions()
def testSerialisation( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["i"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["user"]["o"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["e"] = Gaffer.Expression() s["e"].setExpression( "parent.n.user.o = parent.n.user.i + 1;", "OSL" ) s["n"]["user"]["i"].setValue( 1 ) self.assertEqual( s["n"]["user"]["o"].getValue(), 2 ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) self.assertEqual( s2["n"]["user"]["o"].getValue(), 2 ) s2["n"]["user"]["i"].setValue( 2 ) self.assertEqual( s2["n"]["user"]["o"].getValue(), 3 )
def testContextTypes( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["f"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["user"]["i"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["user"]["c"] = Gaffer.Color3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["user"]["v"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["user"]["s"] = Gaffer.StringPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["e"] = Gaffer.Expression() s["e"].setExpression( inspect.cleandoc( """ parent.n.user.f = context( "f", 1 ); parent.n.user.i = context( "i", 1 ); parent.n.user.c = context( "c", color( 1, 2, 3 ) ); parent.n.user.v = context( "v", vector( 0, 1, 2 ) ); parent.n.user.s = context( "s", "default" ); """ ), "OSL" ) with Gaffer.Context() as c : self.assertEqual( s["n"]["user"]["f"].getValue(), 1 ) self.assertEqual( s["n"]["user"]["i"].getValue(), 1 ) self.assertEqual( s["n"]["user"]["c"].getValue(), imath.Color3f( 1, 2, 3 ) ) self.assertEqual( s["n"]["user"]["v"].getValue(), imath.V3f( 0, 1, 2 ) ) self.assertEqual( s["n"]["user"]["s"].getValue(), "default" ) c["f"] = 10 c["i"] = 11 c["c"] = imath.Color3f( 4, 5, 6 ) c["v"] = imath.V3f( 1, 2, 3 ) c["s"] = "non-default" self.assertEqual( s["n"]["user"]["f"].getValue(), 10 ) self.assertEqual( s["n"]["user"]["i"].getValue(), 11 ) self.assertEqual( s["n"]["user"]["c"].getValue(), imath.Color3f( 4, 5, 6 ) ) self.assertEqual( s["n"]["user"]["v"].getValue(), imath.V3f( 1, 2, 3 ) ) self.assertEqual( s["n"]["user"]["s"].getValue(), "non-default" )
def testRemoveKey(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) curve = Gaffer.Animation.acquire(s["n"]["user"]["f"]) key = Gaffer.Animation.Key(time=10, value=10) curve.addKey(key) self.assertTrue(curve.getKey(key.getTime()).isSame(key)) self.assertTrue(curve.closestKey(0).isSame(key)) self.assertTrue(key.parent().isSame(curve)) curve.removeKey(key) self.assertEqual(curve.getKey(key.getTime()), None) self.assertEqual(curve.closestKey(0), None) self.assertEqual(key.parent(), None)
def testMembershipQueries(self): members = [Gaffer.Node(), Gaffer.Node(), Gaffer.Node()] notMembers = [Gaffer.Node(), Gaffer.Node(), Gaffer.Node()] s = Gaffer.StandardSet(members) for m in members: self.failUnless(m in s) self.failUnless(s.contains(m)) for m in notMembers: self.failIf(m in s) self.failIf(s.contains(m))
def testMembershipQueries( self ) : members = [ Gaffer.Node(), Gaffer.Node(), Gaffer.Node() ] notMembers = [ Gaffer.Node(), Gaffer.Node(), Gaffer.Node() ] s = Gaffer.StandardSet( members ) for m in members : self.assertIn( m, s ) self.assertTrue( s.contains( m ) ) for m in notMembers : self.assertNotIn( m, s ) self.assertFalse( s.contains( m ) )
def testRemoveChildUndoIndices(self): s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() a = Gaffer.Plug("a") b = Gaffer.Plug("b") c = Gaffer.Plug("c") s["n"]["user"].addChild(a) s["n"]["user"].addChild(b) s["n"]["user"].addChild(c) def assertPreconditions(): self.assertEqual(len(s["n"]["user"]), 3) self.assertEqual(s["n"]["user"][0], a) self.assertEqual(s["n"]["user"][1], b) self.assertEqual(s["n"]["user"][2], c) assertPreconditions() with Gaffer.UndoScope(s): del s["n"]["user"]["b"] def assertPostConditions(): self.assertEqual(len(s["n"]["user"]), 2) self.assertEqual(s["n"]["user"][0], a) self.assertEqual(s["n"]["user"][1], c) assertPostConditions() s.undo() assertPreconditions() s.redo() assertPostConditions() s.undo() assertPreconditions()