Exemplo n.º 1
0
        public void LeavesTest()
        {
            var tree = new TreeNode <int>(0);

            TreeNode <int>[] result = TreeUtils.Leaves(tree, t => t.Children).ToArray();
            Assert.Single(result);
            Assert.Contains(result, r => r.Id == 0);

            tree
            .AddChild(1)
            .AddChild(2).Parent
            .AddChild(3)
            .AddChild(4).Parent
            .AddChild(5).Parent.Parent.Parent
            .AddChild(6).Parent
            .AddChild(7)
            .AddChild(8);

            result = TreeUtils.Leaves(tree, t => t.Children).ToArray();

            Assert.Equal(5, result.Length);
            Assert.Contains(result, r => r.Id == 2);
            Assert.Contains(result, r => r.Id == 4);
            Assert.Contains(result, r => r.Id == 5);
            Assert.Contains(result, r => r.Id == 6);
            Assert.Contains(result, r => r.Id == 8);
        }
Exemplo n.º 2
0
        public void DescendantsTest()
        {
            var tree = new TreeNode <string>("F");

            tree
            .AddChild("B")
            .AddChild("A").Parent
            .AddChild("D")
            .AddChild("C").Parent
            .AddChild("E").Parent.Parent.Parent
            .AddChild("G")
            .AddChild("I")
            .AddChild("H");

            IEnumerable <TreeNode <string> > descendants = TreeUtils.Descendants(tree, n => n.Children.AsEnumerable().Reverse(), includeSelf: true);

            Assert.Equal("F, B, A, D, C, E, G, I, H", string.Join(", ", descendants.Select(n => n.Id)));

            descendants = TreeUtils.Descendants(tree, n => n.Children.AsEnumerable().Reverse(), includeSelf: false);
            Assert.Equal("B, A, D, C, E, G, I, H", string.Join(", ", descendants.Select(n => n.Id)));

            descendants = TreeUtils.Descendants(tree, n => n.Children.AsEnumerable().Reverse(), traversal: TreeTraversal.PostOrder);
            Assert.Equal("A, C, E, D, B, H, I, G", string.Join(", ", descendants.Select(n => n.Id)));
        }