Пример #1
0
    def testPatternMatching(self):

        n = GafferTest.StringInOutNode()
        self.assertHashesValid(n)

        d = Gaffer.DeleteContextVariablesComputeNode()
        d["in"] = Gaffer.StringPlug()
        d["out"] = Gaffer.StringPlug(direction=Gaffer.Plug.Direction.Out)
        d["in"].setInput(n["out"])

        c = Gaffer.ContextVariablesComputeNode()
        c["in"] = Gaffer.StringPlug()
        c["out"] = Gaffer.StringPlug(direction=Gaffer.Plug.Direction.Out)
        c["in"].setInput(d["out"])

        n["in"].setValue("$a1_$a2_$b1_$b2_$c1_$c2")
        self.assertEqual(c["out"].getValue(), "_____")

        c["variables"].addMember("a1", IECore.StringData("A1"))
        c["variables"].addMember("a2", IECore.StringData("A2"))
        c["variables"].addMember("b1", IECore.StringData("B1"))
        c["variables"].addMember("b2", IECore.StringData("B2"))
        c["variables"].addMember("c1", IECore.StringData("C1"))
        c["variables"].addMember("c2", IECore.StringData("C2"))
        self.assertEqual(c["out"].getValue(), "A1_A2_B1_B2_C1_C2")

        d["variables"].setValue("a* c*")

        self.assertEqual(c["out"].getValue(), "__B1_B2__")
Пример #2
0
    def testExtraVariables(self):

        s = Gaffer.ScriptNode()
        s["n"] = GafferTest.StringInOutNode()

        s["c"] = Gaffer.ContextVariablesComputeNode()
        s["c"]["in"] = Gaffer.StringPlug(flags=Gaffer.Plug.Flags.Default
                                         | Gaffer.Plug.Flags.Dynamic)
        s["c"]["out"] = Gaffer.StringPlug(direction=Gaffer.Plug.Direction.Out,
                                          flags=Gaffer.Plug.Flags.Default
                                          | Gaffer.Plug.Flags.Dynamic)
        s["c"]["in"].setInput(s["n"]["out"])

        s["n"]["in"].setValue("$a")
        self.assertEqual(s["c"]["out"].getValue(), "")

        dirtied = GafferTest.CapturingSlot(s["c"].plugDirtiedSignal())
        s["c"]["extraVariables"].setValue(IECore.CompoundData({"a": "A"}))
        self.failUnless(s["c"]["out"] in {p[0] for p in dirtied})
        self.assertEqual(s["c"]["out"].getValue(), "A")

        # Extra variables trump regular variables of the same name
        s["c"]["variables"].addMember("a", IECore.StringData("B"))
        self.assertEqual(s["c"]["out"].getValue(), "A")

        s2 = Gaffer.ScriptNode()
        s2.execute(s.serialise())

        self.assertEqual(s2["c"]["out"].getValue(), "A")
Пример #3
0
	def test( self ) :

		n = GafferTest.StringInOutNode()
		self.assertHashesValid( n )

		c = Gaffer.ContextVariablesComputeNode()
		c["in"] = Gaffer.StringPlug()
		c["out"] = Gaffer.StringPlug( direction = Gaffer.Plug.Direction.Out )
		c["in"].setInput( n["out"] )

		n["in"].setValue( "$a" )
		self.assertEqual( c["out"].getValue(), "" )

		c["variables"].addMember( "a", IECore.StringData( "A" ) )
		self.assertEqual( c["out"].getValue(), "A" )
Пример #4
0
    def testExtraVariablesExpression(self):

        s = Gaffer.ScriptNode()
        s["n"] = GafferTest.StringInOutNode()

        s["c"] = Gaffer.ContextVariablesComputeNode()
        s["c"]["in"] = Gaffer.StringPlug(flags=Gaffer.Plug.Flags.Default
                                         | Gaffer.Plug.Flags.Dynamic)
        s["c"]["out"] = Gaffer.StringPlug(direction=Gaffer.Plug.Direction.Out,
                                          flags=Gaffer.Plug.Flags.Default
                                          | Gaffer.Plug.Flags.Dynamic)
        s["c"]["in"].setInput(s["n"]["out"])

        s["n"]["in"].setValue("$a$b$c")
        self.assertEqual(s["c"]["out"].getValue(), "")

        s["e"] = Gaffer.Expression()
        s["e"].setExpression(
            inspect.cleandoc("""
			result = IECore.CompoundData()

			if context.getFrame() > 1 :
				result["a"] = "A"
			if context.getFrame() > 2 :
				result["b"] = "B"
			if context.getFrame() > 3 :
				result["c"] = "C"

			parent["c"]["extraVariables"] = result
			"""))

        with Gaffer.Context() as c:

            self.assertEqual(s["c"]["out"].getValue(), "")

            c.setFrame(2)
            self.assertEqual(s["c"]["out"].getValue(), "A")

            c.setFrame(3)
            self.assertEqual(s["c"]["out"].getValue(), "AB")

            c.setFrame(4)
            self.assertEqual(s["c"]["out"].getValue(), "ABC")
Пример #5
0
	def testSerialisation( self ) :

		s = Gaffer.ScriptNode()
		s["n"] = GafferTest.StringInOutNode()

		s["c"] = Gaffer.ContextVariablesComputeNode()
		s["c"]["in"] = Gaffer.StringPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["c"]["out"] = Gaffer.StringPlug( direction = Gaffer.Plug.Direction.Out, flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["c"]["in"].setInput( s["n"]["out"] )

		s["n"]["in"].setValue( "$a" )
		self.assertEqual( s["c"]["out"].getValue(), "" )

		s["c"]["variables"].addMember( "a", IECore.StringData( "A" ) )
		self.assertEqual( s["c"]["out"].getValue(), "A" )

		s2 = Gaffer.ScriptNode()
		s2.execute( s.serialise() )

		self.assertEqual( s2["c"].keys(), s["c"].keys() )
		self.assertEqual( s2["c"]["out"].getValue(), "A" )
Пример #6
0
	def testDirtyPropagation( self ) :

		n = GafferTest.StringInOutNode()

		c = Gaffer.ContextVariablesComputeNode()
		c["in"] = Gaffer.StringPlug()
		c["out"] = Gaffer.StringPlug( direction = Gaffer.Plug.Direction.Out )
		c["in"].setInput( n["out"] )

		# adding a variable should dirty the output:
		dirtied = GafferTest.CapturingSlot( c.plugDirtiedSignal() )
		c["variables"].addMember( "a", IECore.StringData( "A" ) )
		self.failUnless( c["out"] in [ p[0] for p in dirtied ] )

		# modifying the variable should dirty the output:
		dirtied = GafferTest.CapturingSlot( c.plugDirtiedSignal() )
		c["variables"]["member1"]["value"].setValue("b")
		self.failUnless( c["out"] in [ p[0] for p in dirtied ] )

		# removing the variable should also dirty the output:
		dirtied = GafferTest.CapturingSlot( c.plugDirtiedSignal() )
		c["variables"].removeChild(c["variables"]["member1"])
		self.failUnless( c["out"] in [ p[0] for p in dirtied ] )