コード例 #1
0
        public void Test_Remove_When_Element_Has_Children_Size_Is_Larger()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(3)
            {
                12,
                11,
                13,
                5,
                6,
                7,
                8,
                9,
                10,
                2,
                3,
                4,
                0,
                1
            };

            //When
            tree.Remove(6);
            //Then
            Assert.Equal(new[] { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13 }, tree.InOrderTraversal());
        }
コード例 #2
0
        public void Test_InOrderTraversal_Empty_Tree()
        {
            //Given
            var tree = new BinaryTreeCollection <int>();

            //Then
            Assert.Empty(tree.InOrderTraversal());
        }
コード例 #3
0
        public void Test_InOrderTraversal_Tree_Has_1_Node()
        {
            //Given
            var tree = new BinaryTreeCollection <int>();

            //When
            tree.Add(4);
            //Then
            Assert.Equal(new[] { 4 }, tree.InOrderTraversal());
        }
コード例 #4
0
        public void Test_Array_Of_Values_When_Size_Is_1()
        {
            //Given, when
            var tree = new BinaryTreeCollection <int>(1)
            {
                1
            };

            //Then
            Assert.Equal(new[] { 1 }, tree.InOrderTraversal());
        }
コード例 #5
0
        public void Test_Size_Is_2_Add_Method_should_FILL_current_Array_before_proceeding()
        {
            //Given, when
            var tree = new BinaryTreeCollection <int>(2)
            {
                1,
                2
            };

            //Then
            Assert.Equal(new[] { 1, 2 }, tree.InOrderTraversal());
        }
コード例 #6
0
        public void Test_Size_Is_1_Add_Method_after_2_elements_have_been_added()
        {
            //Given, when
            var tree = new BinaryTreeCollection <int>(1)
            {
                1,
                2
            };

            //Then
            Assert.Equal(new[] { 1, 2 }, tree.InOrderTraversal());
        }
コード例 #7
0
        public void Test_InOrderTraversal_Root_Has_1_Right_Child()
        {
            //Given
            var tree = new BinaryTreeCollection <int>()
            {
                4
            };

            //When
            tree.Add(6);
            //Then
            Assert.Equal(new[] { 4, 6 }, tree.InOrderTraversal());
        }
コード例 #8
0
        public void Test_InOrderTraversal_Root_Has_2_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>()
            {
                4
            };

            //When
            tree.Add(2);
            tree.Add(5);
            //Then
            Assert.Equal(new[] { 2, 4, 5 }, tree.InOrderTraversal());
        }
コード例 #9
0
        public void Test_RemoveChild_Method_Remove_LEAF_When_Tree_Has_3_Nodes()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                2,
                1,
                3
            };

            //Then
            Assert.True(tree.Remove(3));
            Assert.Equal(new[] { 1, 2 }, tree.InOrderTraversal());
        }
コード例 #10
0
        public void Test_AddMethod_Should_Correctly_Shift_Elements_When_Size_Is_2()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                2,
                0,
                3,
                4,
            };

            //Then
            Assert.Equal(new[] { 0, 2, 3, 4 }, tree.InOrderTraversal());
        }
コード例 #11
0
        public void Test_PreOrderTraversal_When_Size_Is_2_()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                1,
                2,
                3,
                4
            };

            //Then
            Assert.Equal(new[] { 1, 2, 3, 4 }, tree.InOrderTraversal());
        }
コード例 #12
0
        public void Test_RemoveChild_When_Node_Is_ROOT_And_Has_2_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                5,
                3,
                6,
            };

            //When
            tree.Remove(5);
            //Then
            Assert.Equal(new[] { 3, 6 }, tree.InOrderTraversal());
        }
コード例 #13
0
        public void Test_RemoveChild_When_NODE_is_ROOT_and_has_only_1_child()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                2,
                3,
                4,
                5
            };

            //Then
            Assert.True(tree.Remove(2));
            Assert.Equal(new[] { 3, 4, 5 }, tree.InOrderTraversal());
        }
コード例 #14
0
        public void Test_RemoveChild_When_Node_is_ROOT_and_has_Only_Left_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                2,
                1,
                0,
                -1
            };

            //Then
            Assert.True(tree.Remove(2));
            Assert.Equal(new[] { -1, 0, 1 }, tree.InOrderTraversal());
        }
コード例 #15
0
        public void Test_AddMethod_For_Edge_Case_When_Size_Is_2()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                1,
                3,
                4,
                5,
                2,
            };

            //Then
            Assert.Equal(new[] { 1, 2, 3, 4, 5 }, tree.InOrderTraversal());
        }
コード例 #16
0
        public void Test_DataArray_Should_Not_Lose_Last_Element_After_Addition()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                1,
                2,
                3,
                4,
                5
            };

            //Then
            Assert.Equal(new[] { 1, 2, 3, 4, 5 }, tree.InOrderTraversal());
        }
コード例 #17
0
        public void Test_Add_Method_For_Edge_Case()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                5,
                2,
                6,
                4,
                3
            };

            //Then
            Assert.Equal(new[] { 6, 5, 4, 3, 2 }, tree.PostOrderTraversal());
            Assert.Equal(new[] { 2, 3, 4, 5, 6 }, tree.InOrderTraversal());
        }
コード例 #18
0
        public void Test_InsertChild_Should_Correctly_Add_Elements_Repeatedely_As_Left_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>();

            //When
            tree.Add(10);
            tree.Add(9);
            tree.Add(8);
            tree.Add(7);
            tree.Add(6);
            tree.Add(5);
            //Then
            Assert.Equal(new[] { 5, 6, 7, 8, 9, 10 }, tree.InOrderTraversal());
            Assert.Equal(6, tree.Count);
        }
コード例 #19
0
        public void Test_InOrderTraversal_Unbalanced_Tree()
        {
            //Given, Whwn
            var tree = new BinaryTreeCollection <int>
            {
                4,
                3,
                2,
                0,
                -1,
                6
            };

            //Then
            Assert.Equal(new[] { -1, 0, 2, 3, 4, 6 }, tree.InOrderTraversal());
        }
コード例 #20
0
        public void Test_RemoveChild_When_Node_Has_Only_Left_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                6,
                4,
                2,
                1,
                3
            };

            //Then
            Assert.True(tree.Remove(4));
            Assert.Equal(new[] { 1, 2, 3, 6 }, tree.InOrderTraversal());
        }
コード例 #21
0
        public void Test_InsertChild_Should_Correctly_Add_Elements_Repeatedely_As_Right_Children()
        {
            //Given
            var tree = new BinaryTreeCollection <int>();

            //When
            tree.Add(1);
            tree.Add(2);
            tree.Add(3);
            tree.Add(4);
            tree.Add(5);
            tree.Add(6);
            //Then
            Assert.Equal(new[] { 1, 2, 3, 4, 5, 6 }, tree.InOrderTraversal());
            Assert.Equal(6, tree.Count);
        }
コード例 #22
0
        public void Test_InsertChild_Should_Correctly_Add_More_Children_To_Root()
        {
            //When
            var tree = new BinaryTreeCollection <int>
            {
                4,
                2,
                1,
                3,
                5,
                6
            };

            //Then
            Assert.Equal(new[] { 1, 2, 3, 4, 5, 6 }, tree.InOrderTraversal());
            Assert.Equal(6, tree.Count);
        }
コード例 #23
0
        public void Test_Clear_Method_Should_Properly_Work_for_a_random_case()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                5,
                3,
                2,
                6,
                4
            };

            //When
            tree.Clear();
            //Then
            Assert.Empty(tree.InOrderTraversal());
        }
コード例 #24
0
        public void Test_RemoveChild_Method_Should_Return_TRUE_When_Removed_Node_Is_Left_Leaf()
        {
            //Given
            var node = new Node <int>(3);
            var tree = new BinaryTreeCollection <int>
            {
                5,
                2,
                6,
                1,
                node.FirstValue,
            };

            //Then
            Assert.True(tree.Remove(node.FirstValue));
            Assert.Equal(new[] { 1, 2, 5, 6 }, tree.InOrderTraversal());
        }
コード例 #25
0
        public void Test_RemoveChild_Edge_Case()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                -1,
                2,
                0,
                1,
                3
            };

            //When
            tree.Remove(2);
            //Then
            Assert.Equal(new[] { -1, 0, 1, 3 }, tree.InOrderTraversal());
        }
コード例 #26
0
        public void Test_RemoveChild_Method_Should_Work_Correctly_When_Node_Has_1_Child()
        {
            //Given
            var tree = new BinaryTreeCollection <int>
            {
                2,
                1,
                3,
                4,
                5,
                6
            };

            //Then
            Assert.True(tree.Remove(4));
            Assert.Equal(new[] { 1, 2, 3, 5, 6 }, tree.InOrderTraversal());
        }
コード例 #27
0
        public void Test_RemoveMethod_When_Node_Is_Root_Size_Is_2()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                4,
                5,
                2,
                3,
                6,
                7
            };

            //When
            Assert.True(tree.Remove(4));
            //Then
            Assert.Equal(new[] { 2, 3, 5, 6, 7 }, tree.InOrderTraversal());
        }
コード例 #28
0
        public void Test_Remove__Element_Is_Leaf_Should_correctly_remove_Middle_element()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(3)
            {
                3,
                5,
                6,
                7,
                8,
                9
            };

            //When
            tree.Remove(8);
            //Then
            Assert.Equal(new[] { 3, 5, 6, 7, 9 }, tree.InOrderTraversal());
        }
コード例 #29
0
        public void Test_Remove__Element_Has_One_Right_Child_Should_correctly_remove_LAST_element()
        {
            //Given
            var tree = new BinaryTreeCollection <int>(2)
            {
                0,
                1,
                2,
                3,
                4,
                5,
            };

            //When
            tree.Remove(3);
            //Then
            Assert.Equal(new[] { 0, 1, 2, 4, 5 }, tree.InOrderTraversal());
        }
コード例 #30
0
        public void Test_Remove_Should_Correctly_Work_When_Element_Is_Leaf()
        {
            //Given
            var tree = new BinaryTreeCollection <int>()
            {
                3,
                5,
                6,
                7,
                8,
                9
            };

            //When
            tree.Remove(9);
            //Then
            Assert.Equal(new[] { 3, 5, 6, 7, 8 }, tree.InOrderTraversal());
        }