コード例 #1
0
        public void Test_CreateEdgeAction_Itemize(TestingMode testingMode, ItemizeOptions options, ItemizeTestType itemizeTest, Func <VSGraphModel, IHasMainOutputPort> makeNode)
        {
            // save initial itemize options
            VSPreferences  pref           = ((TestState)m_Store.GetState()).Preferences;
            ItemizeOptions initialOptions = pref.CurrentItemizeOptions;

            try
            {
                // create int node
                IHasMainOutputPort node0 = makeNode(GraphModel);

                // create Addition node
                BinaryOperatorNodeModel opNode = GraphModel.CreateBinaryOperatorNode(BinaryOperatorKind.Add, Vector2.zero);

                // enable Itemize depending on the test case
                var itemizeOptions = ItemizeOptions.Nothing;
                pref.CurrentItemizeOptions = (itemizeTest == ItemizeTestType.Enabled) ? options : itemizeOptions;

                // connect int to first input
                m_Store.Dispatch(new CreateEdgeAction(opNode.InputPortA, node0.OutputPort));
                m_Store.Update();

                // test how the node reacts to getting connected a second time
                TestPrereqActionPostreq(testingMode,
                                        () =>
                {
                    RefreshReference(ref node0);
                    RefreshReference(ref opNode);
                    var binOp            = GraphModel.GetAllNodes().OfType <BinaryOperatorNodeModel>().First();
                    IPortModel input0    = binOp.InputPortA;
                    IPortModel input1    = binOp.InputPortB;
                    IPortModel binOutput = binOp.OutputPort;
                    Assert.That(GetNodeCount(), Is.EqualTo(2));
                    Assert.That(GetEdgeCount(), Is.EqualTo(1));
                    Assert.That(input0, Is.ConnectedTo(node0.OutputPort));
                    Assert.That(input1, Is.Not.ConnectedTo(node0.OutputPort));
                    Assert.That(binOutput.Connected, Is.False);
                    return(new CreateEdgeAction(input1, node0.OutputPort));
                },
                                        () =>
                {
                    RefreshReference(ref node0);
                    RefreshReference(ref opNode);
                    var binOp            = GraphModel.GetAllNodes().OfType <BinaryOperatorNodeModel>().First();
                    IPortModel input0    = binOp.InputPortA;
                    IPortModel input1    = binOp.InputPortB;
                    IPortModel binOutput = binOp.OutputPort;
                    Assert.That(GetEdgeCount(), Is.EqualTo(2));
                    Assert.That(input0, Is.ConnectedTo(node0.OutputPort));
                    Assert.That(binOutput.Connected, Is.False);

                    if (itemizeTest == ItemizeTestType.Enabled)
                    {
                        Assert.That(GetNodeCount(), Is.EqualTo(3));
                        IHasMainOutputPort newNode = GetNode(2) as IHasMainOutputPort;
                        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));
                    }
                });
            }
            finally
            {
                // restore itemize options
                pref.CurrentItemizeOptions = initialOptions;
            }
        }
コード例 #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);
            }
        }
コード例 #3
0
 static object[] MakeItemizeTestCase(TestingMode testingMode, ItemizeOptions options, ItemizeTestType itemizeTest, Func <VSGraphModel, IHasMainOutputPort> makeNode)
 {
     return(new object[] { testingMode, options, itemizeTest, makeNode });
 }
コード例 #4
0
 static object[] MakeItemizeTestCase(TestingMode testingMode, ItemizeTestType itemizeTest, Func <GraphModel, IInputOutputPortsNodeModel> makeNode)
 {
     return(new object[] { testingMode, itemizeTest, makeNode });
 }