public IEnumerator EdgeConnectDragMultipleEdgesFromExecutionPortInputToOutputWorks() { IONodeModel exeStartNode = CreateNode("First Out Exe node", new Vector2(100, 100), 0, 0, 0, 1); IONodeModel exeStartNode2 = CreateNode("Second Out Exe node", new Vector2(100, 400), 0, 0, 0, 1); IONodeModel exeEndNode = CreateNode("First In Exe node", new Vector2(400, 100), 0, 0, 1, 0); IONodeModel exeEndNode2 = CreateNode("Second In Exe node", new Vector2(400, 400), 0, 0, 1, 0); IPortModel startPort = exeStartNode.GetPorts(PortDirection.Output, PortType.Execution).First(); IPortModel startPort2 = exeStartNode2.GetPorts(PortDirection.Output, PortType.Execution).First(); IPortModel endPort = exeEndNode.GetPorts(PortDirection.Input, PortType.Execution).First(); IPortModel endPort2 = exeEndNode2.GetPorts(PortDirection.Input, PortType.Execution).First(); // We start without any connection Assert.AreEqual(0, startPort.GetConnectedEdges().Count()); Assert.AreEqual(0, endPort.GetConnectedEdges().Count()); Assert.AreEqual(0, endPort2.GetConnectedEdges().Count()); MarkGraphViewStateDirty(); yield return(null); Port startPortUI = startPort.GetUI <Port>(graphView); Port startPort2UI = startPort2.GetUI <Port>(graphView); Port endPortUI = endPort.GetUI <Port>(graphView); Port endPort2UI = endPort2.GetUI <Port>(graphView); // Drag an edge between the two ports helpers.DragTo(startPortUI.GetGlobalCenter(), endPortUI.GetGlobalCenter()); helpers.DragTo(startPort2UI.GetGlobalCenter(), endPortUI.GetGlobalCenter()); // Allow one frame for the edge to be placed onto a layer yield return(null); // Allow one frame for the edge to be rendered and process its layout a first time yield return(null); // Check that the edge exists and that it connects the two ports. Assert.AreEqual(1, startPort.GetConnectedEdges().Count()); Assert.AreEqual(1, startPort2.GetConnectedEdges().Count()); Assert.AreEqual(2, endPort.GetConnectedEdges().Count()); graphView.CommandDispatcher.Dispatch(new SelectElementsCommand(SelectElementsCommand.SelectionMode.Replace, endPort.GetConnectedEdges().First(), endPort.GetConnectedEdges().Skip(1).First())); helpers.DragTo(endPortUI.GetGlobalCenter() - new Vector3(k_EdgeSelectionOffset, 0, 0), endPort2UI.GetGlobalCenter()); // Allow one frame for the edge to be placed onto a layer yield return(null); // Allow one frame for the edge to be rendered and process its layout a first time yield return(null); Assert.AreEqual(1, startPort.GetConnectedEdges().Count()); Assert.AreEqual(1, startPort2.GetConnectedEdges().Count()); Assert.AreEqual(2, endPort2.GetConnectedEdges().Count()); }
protected IEnumerator ConnectPorts(IPortModel fromPort, IPortModel toPort) { var originalEdgeCount = GraphModel.EdgeModels.Count; var fromPortUI = fromPort.GetUI <Port>(graphView); var toPortUI = toPort.GetUI <Port>(graphView); Assert.IsNotNull(fromPortUI); Assert.IsNotNull(toPortUI); // Drag an edge between the two ports helpers.DragTo(fromPortUI.GetGlobalCenter(), toPortUI.GetGlobalCenter()); yield return(null); Assert.AreEqual(originalEdgeCount + 1, GraphModel.EdgeModels.Count, "Edge has not been created"); }