/// <summary> Connect this <see cref="NodePort"/> to another </summary>
        /// <param name="port">The <see cref="NodePort"/> to connect to</param>
        public void Connect(INodePort port)
        {
            if (connections == null)
            {
                connections = new List <PortConnection>();
            }

            if (!ConnectionValidator.Validate(this, port))
            {
                return;
            }

            if (port.ConnectionType == ConnectionType.Override && port.ConnectionCount != 0)
            {
                port.ClearConnections();
            }

            if (ConnectionType == ConnectionType.Override && ConnectionCount != 0)
            {
                ClearConnections();
            }

            var portNode = port.Node;

            connections.Add(new PortConnection(port, portNode.Id));

            if (!port.IsConnectedTo(this))
            {
                port.CreateConnection(nodeId, ItemName);
            }
        }
        /// <summary> Connect this <see cref="NodePort"/> to another </summary>
        /// <param name="port">The <see cref="NodePort"/> to connect to</param>
        public void Connect(INodePort port)
        {
            if (connections == null)
            {
                connections = new List <PortConnection>();
            }

            if (!ConnectionValidator.Validate(this, port))
            {
                GameLog.LogError($"{node?.GraphData.ItemName}:{Node?.ItemName}:{ItemName} Connection Error. Validation Failed");
                return;
            }

            if (port.ConnectionType == ConnectionType.Override && port.ConnectionCount != 0)
            {
                port.ClearConnections();
            }

            if (ConnectionType == ConnectionType.Override && ConnectionCount != 0)
            {
                ClearConnections();
            }

            var portNode = port.Node;

            connections.Add(new PortConnection(port, portNode.Id));

            if (!port.IsConnectedTo(this))
            {
                port.CreateConnection(nodeId, ItemName);
            }
        }
        public void RunCase(Func <FlowBuilder, IFlowNode> createNode, int errorsCount)
        {
            // Arrange
            var b = new FlowBuilder();

            var f = b.FaultHandler <MyFaultHandler>();
            var c = b.Activity <MyCancellationHandler>();

            b.WithDefaultFaultHandler(f);
            b.WithDefaultCancellationHandler(c);

            var node = createNode(b);

            b.WithInitialNode(node);

            var validator = new ConnectionValidator();

            // Act
            validator.Validate(b.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node).Count(), Is.EqualTo(errorsCount));
        }