public void ImplementingIEquatableOnABaseClassOrInterfaceThroughInterface()
        {
            IEquatableObject obj1 = new InheritedEquatableObject {
                SomeProperty = 1
            };
            IEquatableObject obj2 = new InheritedEquatableObject {
                SomeProperty = 1
            };

            var n         = new TCLiteEqualityComparer();
            var tolerance = Tolerance.Exact;

            Assert.That(n.AreEqual(obj1, obj2, ref tolerance), Is.True);
            Assert.That(n.AreEqual(obj2, obj1, ref tolerance), Is.True);
        }
        public void CanHandleMultipleImplementationsOfIEquatable()
        {
            IEquatableObject obj1 = new InheritedEquatableObject {
                SomeProperty = 1
            };
            IEquatableObject obj2 = new MultipleIEquatables {
                SomeProperty = 1
            };
            var obj3 = new EquatableObject {
                SomeProperty = 1
            };

            var n         = new TCLiteEqualityComparer();
            var tolerance = Tolerance.Exact;

            Assert.That(n.AreEqual(obj1, obj2, ref tolerance), Is.True);
            Assert.That(n.AreEqual(obj2, obj1, ref tolerance), Is.True);
            Assert.That(n.AreEqual(obj1, obj3, ref tolerance), Is.False);
            Assert.That(n.AreEqual(obj3, obj1, ref tolerance), Is.False);
            Assert.That(n.AreEqual(obj2, obj3, ref tolerance), Is.True);
            Assert.That(n.AreEqual(obj3, obj2, ref tolerance), Is.True);
        }