public void IgnoreDerivedClassPropertyUsingIgnoreProperty()
        {
            var config = new ComparisonConfig();

            config.IgnoreProperty <DeriveFromOfficer>(x => x.ID);

            var deriveFromOfficer1 = new DeriveFromOfficer {
                HomeAddress = "Address", ID = 1, Name = "John", Type = Deck.Engineering
            };
            var deriveFromOfficer2 = new DeriveFromOfficer {
                HomeAddress = "Address", ID = 2, Name = "John", Type = Deck.Engineering
            };

            var derive2FromOfficer1 = new Derive2FromOfficer {
                Email = "*****@*****.**", ID = 3, Name = "John", Type = Deck.Engineering
            };
            var derive2FromOfficer2 = new Derive2FromOfficer {
                Email = "*****@*****.**", ID = 4, Name = "John", Type = Deck.Engineering
            };

            var compare = new CompareLogic(config);

            var result = compare.Compare((Officer)deriveFromOfficer1, (Officer)deriveFromOfficer2);

            Assert.IsTrue(result.AreEqual);

            result = compare.Compare(derive2FromOfficer1, derive2FromOfficer2);
            Assert.IsFalse(result.AreEqual);
        }
        public void CustomBaseClassPropertyComparer()
        {
            var config = new ComparisonConfig();

            config.CustomPropertyComparer <Officer>(officer => officer.ID,
                                                    new CustomComparer <int, int>((i, i1) => i % 2 == 1));

            var deriveFromOfficer1 = new Officer {
                ID = 1, Name = "John", Type = Deck.Engineering
            };
            var deriveFromOfficer2 = new Officer {
                ID = 2, Name = "John", Type = Deck.Engineering
            };

            var derive2FromOfficer1 = new Derive2FromOfficer {
                Email = "*****@*****.**", ID = 3, Name = "John", Type = Deck.Engineering
            };
            var derive2FromOfficer2 = new Derive2FromOfficer {
                Email = "*****@*****.**", ID = 4, Name = "John", Type = Deck.Engineering
            };

            var compare = new CompareLogic(config);

            var result = compare.Compare(deriveFromOfficer1, deriveFromOfficer2);

            Assert.IsTrue(result.AreEqual);

            result = compare.Compare(derive2FromOfficer1, derive2FromOfficer2);
            Assert.IsTrue(result.AreEqual);
        }