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); }
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); }