Beispiel #1
0
        public void SelectTreeNodes()
        {
            var tree = LabeledTree.Node(1,
                                        LabeledTree.Edge("a", LabeledTree.Node <int, string>(11)),
                                        LabeledTree.Edge("b", LabeledTree.Node <int, string>(12)));

            var nodeOrder = new List <int>();
            var edgeOrder = new List <string>();

            var expectedTree = LabeledTree.Node(1,
                                                LabeledTree.Edge("a", LabeledTree.Node <int, string>(12)),
                                                LabeledTree.Edge("b", LabeledTree.Node <int, string>(13)));

            var actualTree = tree.TransformTopDown((source, edge, target) =>
            {
                nodeOrder.Add(target);
                edgeOrder.Add(edge);
                return(source + target);
            });

            AssertEqualTree(expectedTree, actualTree);

            Assert.AreEqual(2, nodeOrder.Count);
            Assert.AreEqual(2, edgeOrder.Count);
        }
        private LabeledTree <ElementInstantiation, ModelEntity.Connector> SelectRootWithAlternatives(LabeledTree <ElementInstantiation, ModelEntity.Connector> root)
        {
            var markedRoot = LabeledTree.Node(root.Label.Copy(selected: true), root.Edges);

            System.Diagnostics.Debug.WriteLine("Select {0}", root.Label.Element.Name);
            if (markedRoot.Label.Element is Problem)
            {
                return(markedRoot.TransformTopDown((from, via, to) =>
                {
                    if (from == markedRoot.Label && via.Is(ConnectorStereotypes.AddressedBy) && !to.Instance.IsDefined)
                    {
                        System.Diagnostics.Debug.WriteLine("Select {0}", to.Element.Name);
                        return to.Copy(selected: true);
                    }
                    else
                    {
                        return to;
                    }
                }));
            }
            else
            {
                return(markedRoot);
            }
        }
        private LabeledTree <ElementInstantiation, ModelEntity.Connector> MarkSelectedNodes(LabeledTree <ElementInstantiation, ModelEntity.Connector> problemSpace, TreeNode treeNode)
        {
            var edges = from pair in problemSpace.Edges.Zip(treeNode.Nodes.Cast <TreeNode>())
                        select LabeledTree.Edge(pair.Item1.Label, MarkSelectedNodes(pair.Item1.Target, pair.Item2));

            return((!problemSpace.Label.Instance.IsDefined && treeNode.Checked)
                   .Then(() => LabeledTree.Node(new ElementInstantiation(problemSpace.Label.Element, selected: true), edges))
                   .Else(() => LabeledTree.Node(problemSpace.Label.Copy(selected: false), edges)));
        }
Beispiel #4
0
        public void CountLevels()
        {
            var tree = LabeledTree.Node(1,
                                        LabeledTree.Edge("a", LabeledTree.Node <int, string>(11)),
                                        LabeledTree.Edge("b", LabeledTree.Node <int, string>(12,
                                                                                             LabeledTree.Edge("c", LabeledTree.Node <int, string>(121)))));

            Assert.AreEqual(0, tree.Level(1));
            Assert.AreEqual(1, tree.Level(11));
            Assert.AreEqual(1, tree.Level(12));
            Assert.AreEqual(2, tree.Level(121));
            Assert.AreEqual(int.MaxValue, tree.Level(1211));
        }
        public void OnceFilter()
        {
            var graph = DirectedLabeledGraph.Create(
                Tuple.Create("1", "a", "2"),
                Tuple.Create("2", "a", "1")
                );

            var expected = LabeledTree.Node("1",
                                            LabeledTree.Edge("a", LabeledTree.Node <string, string>("2")));

            var filter = DirectedLabeledGraph.TraverseEdgeOnlyOnce(EqualityComparer <string> .Default);

            AssertEqual(expected, graph.ToTree(filter));
        }
        public void TransformSimpleGraphToTree()
        {
            var graph = DirectedLabeledGraph.Create(
                Tuple.Create(1, "a", 2),
                Tuple.Create(1, "b", 3),
                Tuple.Create(2, "c", 3)
                );

            var expected = LabeledTree.Node(1,
                                            LabeledTree.Edge("a", LabeledTree.Node(2,
                                                                                   LabeledTree.Edge("c", LabeledTree.Node <int, string>(3)))),
                                            LabeledTree.Edge("b", LabeledTree.Node <int, string>(3)));

            AssertEqual(expected, graph.ToTree());
        }
Beispiel #7
0
        public void CountLeafs()
        {
            var tree = LabeledTree.Node(1,
                                        LabeledTree.Edge("a", LabeledTree.Node <int, string>(11,
                                                                                             LabeledTree.Edge("c", LabeledTree.Node <int, string>(111)),
                                                                                             LabeledTree.Edge("c", LabeledTree.Node <int, string>(112)))),
                                        LabeledTree.Edge("b", LabeledTree.Node <int, string>(12,
                                                                                             LabeledTree.Edge("c", LabeledTree.Node <int, string>(121)))));

            Assert.AreEqual(3, tree.Leafs());
            Assert.AreEqual(3, tree.Leafs(1));
            Assert.AreEqual(2, tree.Leafs(11));
            Assert.AreEqual(1, tree.Leafs(12));
            Assert.AreEqual(1, tree.Leafs(121));
            Assert.AreEqual(0, tree.Leafs(999));
        }