Exemplo n.º 1
0
        public void Calculate_WithChildrenArea_Works()
        {
            var model = _modelBuilder
                        .AddNodes("A", "B")
                        .AddRelationships("A->B")
                        .AddChildNodes("B", "C", "D")
                        .AddRelationships("C->D")
                        .Model;

            var diagramBuilder = new DiagramBuilder(model)
                                 .AddNodes(("A", 1, 1), ("B", 2, 2))
                                 .AddChildNodes("B", ("C", 3, 3), ("D", 4, 4))
                                 .AddAllRelationships();

            var rootLayoutInfo  = SetUpRootLayoutInfo(diagramBuilder, ("A", 0, 0), ("B", 1, 1));
            var nodeBLayoutInfo = SetUpNodeLayoutInfo(diagramBuilder, "B", ("C", 0, 0), ("D", 1, 1));

            var diagramLayoutInfo = CreateLayoutAlgorithm().Calculate(diagramBuilder.Diagram);

            diagramLayoutInfo.RootNodes.Should().BeEquivalentTo(rootLayoutInfo.Nodes);

            var nodeBResult = diagramLayoutInfo.RootNodes.First(i => i.Node.Name == "B");

            nodeBResult.ChildrenArea.Nodes.Should().BeEquivalentTo(nodeBLayoutInfo.Nodes);

            // C+D rect should be: from C.TopLeft(0,0) to D.TopLeft(1,1) + D.PayloadAreaSize(4,4)
            nodeBResult.ChildrenArea.Rect.Should().Be(new Rect2D(0, 0, 5, 5));

            // B rect should be B.TopLeft(1,1) + B.Size(5,7) which comes from stacking B.PayloadAreaSize(2,2) and B.ChildrenAreaSize(5,5)
            nodeBResult.Rect.Should().Be(new Rect2D(1, 1, 6, 8));
        }
Exemplo n.º 2
0
        public void Calculate_RootNodesOnly_Works()
        {
            var model = _modelBuilder
                        .AddNodes("A", "B")
                        .AddRelationships("A->B")
                        .Model;

            var diagramBuilder = new DiagramBuilder(model)
                                 .AddNodes(("A", 1, 1), ("B", 2, 2))
                                 .AddAllRelationships();

            var rootLayoutInfo = SetUpRootLayoutInfo(diagramBuilder, ("A", 0, 0), ("B", 1, 1));

            var diagramLayoutInfo = CreateLayoutAlgorithm().Calculate(diagramBuilder.Diagram);

            diagramLayoutInfo.RootNodes.Should().BeEquivalentTo(rootLayoutInfo.Nodes);
        }