예제 #1
0
        private BinaryTreeSpec GetTree()
        {
            //root
            var root = new BinaryTreeSpec(1);

            //left tree
            var firstLvlLeftNode       = new BinaryTreeSpec(2);
            var secondLvlLeftNodeLeft  = new BinaryTreeSpec(2);
            var secondLvlLeftNodeRight = new BinaryTreeSpec(4);
            var thirdLvlLeftNode       = new BinaryTreeSpec(5);

            root.SetLeft(firstLvlLeftNode);
            firstLvlLeftNode.SetLeft(secondLvlLeftNodeLeft);
            firstLvlLeftNode.SetRigth(secondLvlLeftNodeRight);
            secondLvlLeftNodeLeft.SetLeft(thirdLvlLeftNode);

            //right tree
            var firstLvlRightNode       = new BinaryTreeSpec(3);
            var secondLvlRightNodeRight = new BinaryTreeSpec(7);
            var thirdLvlRightNode       = new BinaryTreeSpec(10);

            root.SetRigth(firstLvlRightNode);
            firstLvlRightNode.SetRigth(secondLvlRightNodeRight);
            secondLvlRightNodeRight.SetLeft(thirdLvlRightNode);

            return(root);
        }
예제 #2
0
        public void Set_right_node_must_set_HasRight_property_true()
        {
            var root  = new BinaryTreeSpec(1);
            var right = new BinaryTreeSpec(3);

            root.SetRigth(right);

            Assert.IsTrue(root.HasRight);
        }
예제 #3
0
        public void Detach_not_set_node_must_not_throw_an_expetion()
        {
            var root = new BinaryTreeSpec(1);

            root.DetachLeftNode();
            root.DetachRightNode();

            Assert.IsFalse(root.HasLeft);
        }
예제 #4
0
        public void Set_left_node_must_set_HasLeft_property_true()
        {
            var root = new BinaryTreeSpec(1);
            var left = new BinaryTreeSpec(2);

            root.SetLeft(left);

            Assert.IsTrue(root.HasLeft);
        }
예제 #5
0
        public void ToString_must_values_separate_by_a_dash()
        {
            var root  = new BinaryTreeSpec(1);
            var left  = new BinaryTreeSpec(2);
            var right = new BinaryTreeSpec(3);

            root.SetLeft(left);
            root.SetRigth(right);

            Assert.AreEqual(root.ToString(), "1 - 2 - 3");
        }
예제 #6
0
        public void Detach_right_node_must_clear_relationship_in_both_ways()
        {
            var root  = new BinaryTreeSpec(1);
            var right = new BinaryTreeSpec(3);

            root.SetRigth(right);
            root.DetachRightNode();

            Assert.IsFalse(root.HasLeft);
            Assert.IsTrue(right.IsRoot);
        }
예제 #7
0
        public void Detach_left_node_must_clear_relationship_in_both_ways()
        {
            var root = new BinaryTreeSpec(1);
            var left = new BinaryTreeSpec(2);

            root.SetLeft(left);
            root.DetachLeftNode();

            Assert.IsFalse(root.HasLeft);
            Assert.IsTrue(left.IsRoot);
        }
예제 #8
0
        public void Reset_a_right_node_must_detach_older_one()
        {
            var root   = new BinaryTreeSpec(1);
            var right  = new BinaryTreeSpec(2);
            var right2 = new BinaryTreeSpec(3);

            root.SetRigth(right);
            root.SetRigth(right2);

            Assert.IsNull(right.Parent);
            Assert.AreEqual(root.Right.Value, right2.Value);
        }
예제 #9
0
        public void Reset_a_left_node_must_detach_older_one()
        {
            var root  = new BinaryTreeSpec(1);
            var left  = new BinaryTreeSpec(2);
            var left2 = new BinaryTreeSpec(3);

            root.SetLeft(left);
            root.SetLeft(left2);

            Assert.IsNull(left.Parent);
            Assert.AreEqual(root.Left.Value, left2.Value);
        }
예제 #10
0
        public void Set_null_value_to_right_node_must_throw_ArgumentNullException()
        {
            var root = new BinaryTreeSpec(1);

            root.SetRigth(null);
        }
예제 #11
0
        public void ToString_with_the_root_must_return_only_the_value()
        {
            var root = new BinaryTreeSpec(1);

            Assert.AreEqual(root.ToString(), "1");
        }
예제 #12
0
        public void A_root_is_only_one_element()
        {
            var root = new BinaryTreeSpec(1);

            Assert.AreEqual(root.Count, 1);
        }