public void ComparingReferenceTypesWithOverriddenEquals()
        {
            var p1 = new PersonWithEquals {
                Name = "Sarah"
            };
            var p2 = new PersonWithEquals {
                Name = "Sarah"
            };

            Assert.Equal(p1, p2);
        }
        public void ComapareReferenceTypesWithOverriddenEquals()
        {
            var e1 = new PersonWithEquals {
                Name = "MsCrm"
            };
            var e2 = new PersonWithEquals {
                Name = "MsCrm"
            };

            Assert.Equal(e1, e2);
        }
        public void CustomEqualityComparator()
        {
            var e1 = new PersonWithEquals {
                Name = "MyName"
            };
            var e2 = new PersonWithEquals {
                Name = "MsCrm"
            };

            Assert.Equal(e1, e2, new FirstLetterEqualityComparator());
        }
        public void CustomIEqualityComparer()
        {
            var p1 = new PersonWithEquals {
                Name = "Sarah"
            };
            var p2 = new PersonWithEquals {
                Name = "Simon"
            };

            // Using an explicit IEqualityComparer works in place of PersonWithEquals.Equals
            Assert.Equal(p1, p2, new FirstLetterEqualityComparer());
        }