private static bool ValidateEdges(INode node)
{
if (node.IsLeaf())
{
return true;
}
// Get the expected
var actualLeft = node.LeftEdge();
var actualRight = node.RightEdge();
INode left = node;
INode right = node;
while (!left.IsLeaf())
{
left = left.Left();
}
while (!right.IsLeaf())
{
right = right.Right();
}
var expectedLeft = left.LeftEdge();
var expectedRight = right.RightEdge();
Assert.IsTrue(actualLeft == expectedLeft);
Assert.IsTrue(actualRight == expectedRight);
if (actualLeft != expectedLeft || actualRight != expectedRight)
{
return false;
}
// Repeat for node children
return ValidateEdges(node.Left()) && ValidateEdges(node.Right());
}