Пример #1
0
        public void Destroy_ShouldProduceDesiredResults()
        {
            // Arrange.
            var leafNodeOne   = new TestTreeNode(1);
            var leafNodeTwo   = new TestTreeNode(2);
            var leafNodeThree = new TestTreeNode(3);
            var leafNodeFour  = new TestTreeNode(4);
            var leafNodeFive  = new TestTreeNode(5);
            var targetNode    = new TestTreeNode(9, new TestTreeNode[]
            {
                leafNodeOne,
                new TestTreeNode(12, new TestTreeNode[]
                {
                    leafNodeFive
                })
            });
            var rootNode = new TestTreeNode(6, new TestTreeNode[]
            {
                new TestTreeNode(7, new TestTreeNode[]
                {
                    targetNode
                }),
                new TestTreeNode(8, new TestTreeNode[]
                {
                    new TestTreeNode(10, new TestTreeNode[]
                    {
                        leafNodeTwo
                    }),
                    new TestTreeNode(11, new TestTreeNode[]
                    {
                        leafNodeThree,
                        leafNodeFour
                    })
                })
            });

            // Act.
            targetNode.Destroy();

            // Assert.
            targetNode.Value.Should().Be(0);
            targetNode.Parent.Should().BeNull();
            targetNode.Children.Count().Should().Be(0);
            rootNode.Children.First().IsLeaf.Should().BeTrue();
        }