public void TriggersOnSameObjectForMethodEquals()
        {
            var hint = new BrokenEqualityHint();

            var x = new object();

            Expression<Func<bool>> exp = () => x.Equals(x);

            string ignored;
            Assert.IsTrue(hint.TryGetHint(exp.Body, out ignored));
            Assert.IsNotNull(ignored);
        }
        public void PicksUpCorrectTypeForOverriddenMethodEquals()
        {
            var hint = new BrokenEqualityHint();

            var x = new OverridesEqualsBadly();

            Expression<Func<bool>> exp = () => x.Equals(x);

            string ignored;
            Assert.IsTrue(hint.TryGetHint(exp.Body, out ignored));

            Assert.IsNotNull(ignored);
            Assert.IsTrue(ignored.Contains(x.GetType().Name));
        }
        public void DoesntTriggerWithDifferingObjectsForOperatorEquals()
        {
            var hint = new BrokenEqualityHint();

            var x = new object();
            var y = new object();

            Expression<Func<bool>> exp = () => x == y;

            string ignored;
            Assert.IsFalse(hint.TryGetHint(exp.Body, out ignored));

            Assert.IsNull(ignored);
        }