public void AnObjectIsNotEqualWithNull()
        {
            MatchingRule subject = Arrange();

            Assert.IsFalse(subject.Equals(null));
            Assert.IsTrue(subject != null);
        }
        public void TwoObjectsReferringToSameAreEqual()
        {
            MatchingRule subject  = Arrange();
            MatchingRule subject2 = subject;

            Assert.IsTrue(subject.Equals(subject2));
            Assert.IsTrue(subject == subject2);
            Assert.IsTrue(subject.GetHashCode() == subject2.GetHashCode());
        }
        public void RulesWithDifferentIdAreConsideredNotEqual()
        {
            MatchingRule subject  = Arrange();
            MatchingRule subject2 = Arrange();

            Assert.IsFalse(subject.Equals(subject2));
            Assert.IsTrue(subject != subject2);
            Assert.IsTrue(subject.GetHashCode() != subject2.GetHashCode());
        }
        public void RulesWithSameIdAreConsideredEqual()
        {
            MatchingRule subject  = Arrange();
            MatchingRule subject2 = Arrange();

            subject2.RuleId = subject.RuleId;
            Assert.IsTrue(subject.Equals(subject2));
            Assert.IsTrue(subject == subject2);
            Assert.IsTrue(subject.GetHashCode() == subject2.GetHashCode());
        }
        public void TwoObjectsReferringToSameAreEqual2()
        {
            MatchingRule subject  = Arrange();
            object       subject2 = subject;

            Assert.IsTrue(subject.Equals(subject2));
#pragma warning disable 252,253
            Assert.IsTrue(subject == subject2);
#pragma warning restore 252,253
            Assert.IsTrue(subject.GetHashCode() == subject2.GetHashCode());
        }