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> 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))); }
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()); }
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)); }