Algorithmix.UnitTest.NodeTest.IsMirror C# (CSharp) Method

IsMirror() private static method

private static IsMirror ( INode reg, INode rev ) : bool
reg INode
rev INode
return bool
        private static bool IsMirror(INode reg, INode rev)
        {
            if (reg.IsLeaf() ^ rev.IsLeaf())
            {
                throw new Exception("Mirrored nodes are not at the same height");
            }

            if (reg.IsLeaf() && rev.IsLeaf())
            {
                Assert.IsTrue(reg.Size() == rev.Size());
                Assert.IsTrue(reg.Leaf().Orientation == Enumeration.Opposite(rev.Leaf().Orientation));
                Assert.IsTrue(reg.LeftEdge().Direction == Enumeration.Opposite(rev.RightEdge().Direction));
                return true;
            }

            return IsMirror(reg.Left(), rev.Right()) && IsMirror(reg.Right(), rev.Left());
        }