示例#1
0
        public void InsertFixupCase2And3ReflectedTest()
        {
            var value = new object();
            var tree  = new BalancedBoundingTree <double, object>(9.5, 10.5, value);
            var c     = tree.Root;

            var red   = BalancedBoundingTree <double, object> .BalancedBoundingNode.Colour.Red;
            var black = BalancedBoundingTree <double, object> .BalancedBoundingNode.Colour.Black;

            var a = new BalancedBoundingTree <double, object> .BalancedBoundingNode(14.5, 15.5, value, red);

            a.Parent    = c;
            c.UpperTree = a;

            var b = new BalancedBoundingTree <double, object> .BalancedBoundingNode(12.5, 13.5, value, red);

            b.Parent    = a;
            a.LowerTree = b;

            var alpha = new BalancedBoundingTree <double, object> .BalancedBoundingNode(16.5, 17.5, value, black);

            alpha.Parent = a;
            a.UpperTree  = alpha;

            var beta = new BalancedBoundingTree <double, object> .BalancedBoundingNode(13.5, 14.5, value, black);

            beta.Parent = b;
            b.UpperTree = beta;

            var lambda = new BalancedBoundingTree <double, object> .BalancedBoundingNode(11.5, 12.5, value, black);

            lambda.Parent = b;
            b.LowerTree   = lambda;

            var theta = new BalancedBoundingTree <double, object> .BalancedBoundingNode(8.5, 9.5, value, black);

            theta.Parent = c;
            c.LowerTree  = theta;

            // log before
            string beforeFileName = @"balancedBoundingTreeTests.InsertFixupCase2And3ReflectTest.png";

            tree.Write(10, TestGraphDirectory, beforeFileName, Log.Logger).Wait();

            tree.FixupNode(b);

            // log after
            string afterFileName = @"balancedBoundingTreeTests.InsertFixupCase2And3ReflectTest.Result.png";

            tree.Write(10, TestGraphDirectory, afterFileName, Log.Logger).Wait();

            Assert.AreSame(b, tree.Root);
            Assert.AreSame(a, b.UpperTree);
            Assert.AreSame(c, b.LowerTree);
            Assert.AreSame(alpha, a.UpperTree);
            Assert.AreSame(beta, a.LowerTree);
            Assert.AreSame(lambda, c.UpperTree);
            Assert.AreSame(theta, c.LowerTree);

            Assert.AreEqual(black, tree.Root.NodeColour);
            Assert.AreEqual(red, a.NodeColour);
            Assert.AreEqual(red, c.NodeColour);
        }
示例#2
0
        public void InsertFixupCase1BTest()
        {
            var value = new object();
            var red   = BalancedBoundingTree <double, object> .BalancedBoundingNode.Colour.Red;
            var black = BalancedBoundingTree <double, object> .BalancedBoundingNode.Colour.Black;

            var tree = new BalancedBoundingTree <double, object>(9.5, 10.5, value);
            var c    = tree.Root;

            var root = new BalancedBoundingTree <double, object> .BalancedBoundingNode(1, 2, value, black);

            tree.Root      = root;
            root.UpperTree = c;
            c.Parent       = root;



            var b = new BalancedBoundingTree <double, object> .BalancedBoundingNode(7.5, 8.5, value, red);

            b.Parent    = c;
            c.LowerTree = b;

            var a = new BalancedBoundingTree <double, object> .BalancedBoundingNode(4.5, 5.5, value, red);

            a.Parent    = b;
            b.LowerTree = a;

            var d = new BalancedBoundingTree <double, object> .BalancedBoundingNode(14.5, 15.5, value, red);

            d.Parent    = c;
            c.UpperTree = d;


            var alpha = new BalancedBoundingTree <double, object> .BalancedBoundingNode(3.5, 4.5, value, black);

            alpha.Parent = a;
            a.LowerTree  = alpha;

            var beta = new BalancedBoundingTree <double, object> .BalancedBoundingNode(6.5, 7.5, value, black);

            beta.Parent = a;
            a.UpperTree = beta;

            var lambda = new BalancedBoundingTree <double, object> .BalancedBoundingNode(8.5, 9.5, value, black);

            lambda.Parent = b;
            b.UpperTree   = lambda;

            var theta = new BalancedBoundingTree <double, object> .BalancedBoundingNode(13.5, 14.5, value, black);

            theta.Parent = d;
            d.LowerTree  = theta;

            var epsilon = new BalancedBoundingTree <double, object> .BalancedBoundingNode(15.5, 16.5, value, black);

            epsilon.Parent = d;
            d.UpperTree    = epsilon;

            tree.FixupNode(a);

            Assert.AreEqual(red, tree.Root.UpperTree.NodeColour);
            Assert.AreEqual(red, a.NodeColour);
            Assert.AreEqual(black, b.NodeColour);
            Assert.AreEqual(black, d.NodeColour);
        }