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; } }
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); } }
static object[] MakeItemizeTestCase(TestingMode testingMode, ItemizeOptions options, ItemizeTestType itemizeTest, Func <VSGraphModel, IHasMainOutputPort> makeNode) { return(new object[] { testingMode, options, itemizeTest, makeNode }); }
static object[] MakeItemizeTestCase(TestingMode testingMode, ItemizeTestType itemizeTest, Func <GraphModel, IInputOutputPortsNodeModel> makeNode) { return(new object[] { testingMode, itemizeTest, makeNode }); }