Example #1
0
 public static IPortModel GetOutputPort(ISingleOutputPortNodeModel self)
 {
     return(self.OutputsById.Values.FirstOrDefault());
 }
Example #2
0
        public void Test_CreateEdgeCommand_Itemize(TestingMode testingMode, ItemizeTestType itemizeTest, Func <GraphModel, IInputOutputPortsNodeModel> makeNode)
        {
            // create int node
            IInputOutputPortsNodeModel node0 = makeNode(GraphModel);

            var opNode = GraphModel.CreateNode <Type0FakeNodeModel>("Node0", Vector2.zero);

            // connect int to first input
            m_CommandDispatcher.Dispatch(new CreateEdgeCommand(opNode.Input0, node0.OutputsByDisplayOrder.First()));

            var prevItemizeConstants = m_CommandDispatcher.State.Preferences.GetBool(BoolPref.AutoItemizeConstants);
            var prevItemizeVariables = m_CommandDispatcher.State.Preferences.GetBool(BoolPref.AutoItemizeVariables);

            if (itemizeTest == ItemizeTestType.Enabled)
            {
                m_CommandDispatcher.State.Preferences.SetBool(BoolPref.AutoItemizeConstants, true);
                m_CommandDispatcher.State.Preferences.SetBool(BoolPref.AutoItemizeVariables, true);
            }

            // test how the node reacts to getting connected a second time
            TestPrereqCommandPostreq(testingMode,
                                     () =>
            {
                RefreshReference(ref node0);
                RefreshReference(ref opNode);
                var binOp            = GraphModel.NodeModels.OfType <Type0FakeNodeModel>().First();
                IPortModel input0    = binOp.Input0;
                IPortModel input1    = binOp.Input1;
                IPortModel binOutput = binOp.Output0;
                Assert.That(GetNodeCount(), Is.EqualTo(2));
                Assert.That(GetEdgeCount(), Is.EqualTo(1));
                Assert.That(input0, Is.ConnectedTo(node0.OutputsByDisplayOrder.First()));
                Assert.That(input1, Is.Not.ConnectedTo(node0.OutputsByDisplayOrder.First()));
                Assert.That(binOutput.IsConnected, Is.False);
                return(new CreateEdgeCommand(input1, node0.OutputsByDisplayOrder.First()));
            },
                                     () =>
            {
                RefreshReference(ref node0);
                RefreshReference(ref opNode);
                var binOp            = GraphModel.NodeModels.OfType <Type0FakeNodeModel>().First();
                IPortModel input0    = binOp.Input0;
                IPortModel input1    = binOp.Input1;
                IPortModel binOutput = binOp.Output0;
                Assert.That(GetEdgeCount(), Is.EqualTo(2));
                Assert.That(input0, Is.ConnectedTo(node0.OutputsByDisplayOrder.First()));
                Assert.That(binOutput.IsConnected, Is.False);

                if (itemizeTest == ItemizeTestType.Enabled)
                {
                    Assert.That(GetNodeCount(), Is.EqualTo(3));
                    ISingleOutputPortNodeModel newNode = GetNode(2) as ISingleOutputPortNodeModel;
                    Assert.NotNull(newNode);
                    Assert.That(newNode, Is.TypeOf(node0.GetType()));
                    IPortModel output1 = newNode.OutputPort;
                    Assert.That(input1, Is.ConnectedTo(output1));
                }
                else
                {
                    Assert.That(GetNodeCount(), Is.EqualTo(2));
                }
            });

            if (itemizeTest == ItemizeTestType.Enabled)
            {
                m_CommandDispatcher.State.Preferences.SetBool(BoolPref.AutoItemizeConstants, prevItemizeConstants);
                m_CommandDispatcher.State.Preferences.SetBool(BoolPref.AutoItemizeVariables, prevItemizeVariables);
            }
        }