Exemple #1
0
        private NodeModel NewNode(double x, double y)
        {
            var node = new NodeModel(new Point(x, y));

            node.AddPort(PortAlignment.BOTTOM);
            node.AddPort(PortAlignment.TOP);
            node.AddPort(PortAlignment.LEFT);
            node.AddPort(PortAlignment.RIGHT);
            return(node);
        }
        public void AddPort_Should_Throw_WhenIdIsOccupied()
        {
            var node  = new NodeModel(Substitute.For <INodeType>());
            var port1 = PortModel.Create <string>("Id", PortDirection.Input);
            var port2 = PortModel.Create <string>("Id", PortDirection.Input);

            node.AddPort(port1);

            Assert.That(() => node.AddPort(port2), Throws.ArgumentException);
        }
        private NodeModel NewNode(double x, double y)
        {
            var node = new NodeModel(new Point(x, y));

            node.AddPort(PortAlignment.Bottom);
            node.AddPort(PortAlignment.Top);
            node.AddPort(PortAlignment.Left);
            node.AddPort(PortAlignment.Right);
            return(node);
        }
        public void CanConnect_Should_ReturnFalse_WhenSameNode()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var node1 = new NodeModel(Substitute.For <INodeType>());
            var port1 = PortModel.Create <string>("1", PortDirection.Output);
            var port2 = PortModel.Create <string>("2", PortDirection.Input);

            node1.AddPort(port1);
            node1.AddPort(port2);

            graph.AddNode(node1);

            Assert.That(graph.CanConnect(port1, port2), Is.False);
        }
        protected override void OnInitialized()
        {
            base.OnInitialized();

            diagram.RegisterModelComponent <BotAnswerNode, BotAnswerWidget>();

            var node = new NodeModel(new Point(20, 20));

            node.AddPort(PortAlignment.Top);
            node.AddPort(PortAlignment.Right);
            node.AddPort(PortAlignment.Bottom);
            node.AddPort(PortAlignment.Left);

            diagram.Nodes.Add(new[] { node, NewNode(100, 100), NewNode(300, 300) });
        }
        protected override void OnInitialized()
        {
            base.OnInitialized();

            diagramManager.RegisterModelComponent <BotAnswerNode, BotAnswerWidget>();
            diagramManager.AddNode(NewNode(100, 100));
            diagramManager.AddNode(NewNode(300, 300));

            var node = new NodeModel(new Point(20, 20));

            node.AddPort(PortAlignment.TOP);
            node.AddPort(PortAlignment.RIGHT);
            node.AddPort(PortAlignment.BOTTOM);
            node.AddPort(PortAlignment.LEFT);
            diagramManager.AddNode(node);
        }
 public static void AddNodePorts(this NodeModel node, bool top = true, bool bottom = true, bool left = true,
                                 bool right = true)
 {
     if (top)
     {
         node.AddPort(PortAlignment.Top);
     }
     if (bottom)
     {
         node.AddPort();
     }
     if (left)
     {
         node.AddPort(PortAlignment.Left);
     }
     if (right)
     {
         node.AddPort(PortAlignment.Right);
     }
 }
Exemple #8
0
        public void Disconnect_Should_Batch_WithConnect()
        {
            var graph = new GraphModel(Substitute.For <IGraphType>());

            var node1 = new NodeModel(Substitute.For <INodeType>());
            var node2 = new NodeModel(Substitute.For <INodeType>());

            var port1 = PortModel.Create <string>("Out1", PortDirection.Output);
            var port2 = PortModel.Create <string>("Out2", PortDirection.Output);
            var port3 = PortModel.Create <string>("In1", PortDirection.Input);
            var port4 = PortModel.Create <string>("In2", PortDirection.Input);

            node1.AddPort(port1);
            node1.AddPort(port2);
            node2.AddPort(port3);
            node2.AddPort(port4);

            graph.AddNode(node1);
            graph.AddNode(node2);

            var connection1 = graph.Connect(port1, port3);
            var connection2 = graph.Connect(port2, port4);

            IReadOnlyList <ConnectionModel> removedConnections = null;

            graph.GraphChanged += (an, rn, ac, rc) => { removedConnections = rc; };

            using (graph.BeginChangeSet())
            {
                graph.Disconnect(connection1);
                graph.Disconnect(connection2);

                var connection3 = graph.Connect(port1, port3);

                Assert.That(removedConnections, Is.Null);
                Assert.That(connection3, Is.SameAs(connection1));
            }

            Assert.That(removedConnections, Is.Not.Null);
            Assert.That(removedConnections, Is.EquivalentTo(new[] { connection2 }));
        }
        public void RemoveNode_Should_Remove_Connections()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var node1 = new NodeModel(Substitute.For <INodeType>());
            var node2 = new NodeModel(Substitute.For <INodeType>());
            var node3 = new NodeModel(Substitute.For <INodeType>());

            graph.AddNode(node1);
            graph.AddNode(node2);
            graph.AddNode(node3);

            var port1 = PortModel.Create <string>("Out", PortDirection.Output);
            var port2 = PortModel.Create <string>("In", PortDirection.Input);
            var port3 = PortModel.Create <string>("Out", PortDirection.Output);
            var port4 = PortModel.Create <string>("In", PortDirection.Input);

            node1.AddPort(port1);
            node2.AddPort(port2);
            node2.AddPort(port3);
            node3.AddPort(port4);

            var connection1 = graph.Connect(port1, port2);
            var connection2 = graph.Connect(port3, port4);

            IReadOnlyList <ConnectionModel> removedConnections = null;

            graph.GraphChanged += (an, rn, ac, rc) => removedConnections = rc;

            graph.RemoveNode(node2);

            Assert.That(graph.Connections, Does.Not.Contains(connection1));
            Assert.That(graph.Connections, Does.Not.Contains(connection2));

            Assert.That(removedConnections, Is.EquivalentTo(new[] { connection1, connection2 }));
        }
        public void AddPort_Should_Succeed()
        {
            var node = new NodeModel(Substitute.For <INodeType>());

            var port = PortModel.Create <string>("Id", PortDirection.Input);

            NodeModel.NodePortsChangedArgs args = default;
            node.PortsChanged += e => { args = e; };
            node.AddPort(port);

            Assert.That(node.Ports, Does.Contain(port));
            Assert.That(port.Node, Is.EqualTo(node));
            Assert.That(args.Node, Is.EqualTo(node));
            Assert.That(args.Port, Is.EqualTo(port));
            Assert.That(args.IsAdded, Is.True);
        }
        public void CanConnect_Should_ReturnFalse_WhenPortsNotInGraph()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var nodeType = Substitute.For <INodeType>();
            var node1    = new NodeModel(nodeType);
            var node2    = new NodeModel(nodeType);

            var port1 = PortModel.Create <string>("Out", PortDirection.Output);
            var port2 = PortModel.Create <string>("In", PortDirection.Input);

            Assert.That(graph.CanConnect(port1, port2), Is.False);

            node1.AddPort(port1);
            node2.AddPort(port2);

            Assert.That(graph.CanConnect(port1, port2), Is.False);
        }
Exemple #12
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            for (int r = 0; r < 10; r++)
            {
                for (int c = 0; c < 10; c += 2)
                {
                    var node1 = new NodeModel(new Point(10 + c * 10 + c * 120, 10 + r * 100));
                    var node2 = new NodeModel(new Point(10 + (c + 1) * 130, 10 + r * 100));

                    var sourcePort = node1.AddPort(PortAlignment.Right);
                    var targetPort = node2.AddPort(PortAlignment.Left);

                    diagram.Nodes.Add(new[] { node1, node2 });
                    diagram.Links.Add(new LinkModel(sourcePort, targetPort));
                }
            }
        }
        public void Connect_Should_Throw_WhenCanNotConnect()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var nodeType = Substitute.For <INodeType>();
            var node1    = new NodeModel(nodeType);
            var node2    = new NodeModel(nodeType);

            var port1 = PortModel.Create <string>("Out", PortDirection.Input);
            var port2 = PortModel.Create <string>("In", PortDirection.Input);

            node1.AddPort(port1);
            node2.AddPort(port2);

            graph.AddNode(node1);
            graph.AddNode(node2);

            Assert.That(() => graph.Connect(port1, port2), Throws.InvalidOperationException);
        }
        public void Connect_Should_Remove_OtherConnections()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var nodeType = Substitute.For <INodeType>();
            var node1    = new NodeModel(nodeType);
            var node2    = new NodeModel(nodeType);
            var node3    = new NodeModel(nodeType);
            var node4    = new NodeModel(nodeType);

            var port1 = PortModel.Create <string>("Out", PortDirection.Output, PortCapacity.Single);
            var port2 = PortModel.Create <string>("In", PortDirection.Input, PortCapacity.Single);
            var port3 = PortModel.Create <string>("Out", PortDirection.Output, PortCapacity.Single);
            var port4 = PortModel.Create <string>("In", PortDirection.Input, PortCapacity.Single);

            node1.AddPort(port1);
            node2.AddPort(port2);
            node3.AddPort(port3);
            node4.AddPort(port4);

            graph.AddNode(node1);
            graph.AddNode(node2);
            graph.AddNode(node3);
            graph.AddNode(node4);

            var connection1 = graph.Connect(port1, port2);

            IReadOnlyList <ConnectionModel> removedConnections = null;

            graph.GraphChanged += (an, rn, ac, rc) => { removedConnections = rc; };

            // ports may accept only one connection, that's why connection1 will be removed
            var connection2 = graph.Connect(port3, port2);

            Assert.That(graph.Connections, Does.Not.Contains(connection1));
            Assert.That(removedConnections, Is.EquivalentTo(new[] { connection1 }));

            // here, connection2 will be removed
            var connection3 = graph.Connect(port3, port4);

            Assert.That(graph.Connections, Does.Not.Contains(connection2));
            Assert.That(removedConnections, Is.EquivalentTo(new[] { connection2 }));
        }
Exemple #15
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            for (int r = 0; r < 10; r++)
            {
                for (int c = 0; c < 10; c += 2)
                {
                    var node1 = new NodeModel(new Point(10 + c * 10 + c * 120, 10 + r * 100));
                    var node2 = new NodeModel(new Point(10 + (c + 1) * 130, 10 + r * 100));

                    var sourcePort = node1.AddPort(PortAlignment.RIGHT);
                    var targetPort = node2.AddPort(PortAlignment.LEFT);

                    diagramManager.AddNodes(node1, node2);
                    diagramManager.AddLink(sourcePort, targetPort);
                }
            }
        }
Exemple #16
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            for (int r = 0; r < 8; r++)
            {
                for (int c = 0; c < 8; c += 2)
                {
                    var node1 = new NodeModel(new Point(350 + c * 80 + c * 120, 150 + r * 120));
                    var node2 = new NodeModel(new Point(350 + (c + 1) * 200, 150 + r * 120));

                    var sourcePort = node1.AddPort(PortAlignment.Right);
                    var targetPort = node2.AddPort(PortAlignment.Left);

                    diagramManager.AddNodes(node1, node2);
                    diagramManager.AddLink(sourcePort, targetPort);
                }
            }
        }
        public void Connect_Should_Succeed()
        {
            var graph = new GraphModel(GraphTypeWithConnections);

            var nodeType = Substitute.For <INodeType>();
            var node1    = new NodeModel(nodeType);
            var node2    = new NodeModel(nodeType);

            var port1 = PortModel.Create <string>("Out", PortDirection.Output);
            var port2 = PortModel.Create <string>("In", PortDirection.Input);

            node1.AddPort(port1);
            node2.AddPort(port2);

            graph.AddNode(node1);
            graph.AddNode(node2);

            IReadOnlyList <ConnectionModel> list = null;

            graph.GraphChanged += (an, rn, ac, rc) => { list = ac; };

            var connection = graph.Connect(port1, port2);

            Assert.That(connection, Is.Not.Null);

            Assert.That(graph.Connections, Does.Contain(connection));

            Assert.That(port1.Connections, Has.Count.EqualTo(1));
            Assert.That(port2.Connections, Has.Count.EqualTo(1));

            Assert.That(port1.Connections, Is.EquivalentTo(port2.Connections));

            Assert.That(connection.From, Is.EqualTo(port1));
            Assert.That(connection.To, Is.EqualTo(port2));

            Assert.That(list, Is.Not.Null);
            Assert.That(list.Count, Is.EqualTo(1));
            Assert.That(list, Does.Contain(connection));
        }
        public void AddPort_Should_Throw_WhenNullPort()
        {
            var node = new NodeModel(Substitute.For <INodeType>());

            Assert.That(() => node.AddPort(null), Throws.ArgumentNullException);
        }