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);
        }
        public void CustomBaseClassPropertyComparerForEnum()
        {
            var config = new ComparisonConfig();

            config.CustomPropertyComparer <DtoMetaCampo>(metaCampo => metaCampo.Obrigatorio, new CustomComparer <EnumSimNao, EnumSimNao>((i, i1) => i == EnumSimNao.NAO));

            var dtoMetaCampo1 = new DtoMetaCampo {
                Obrigatorio = EnumSimNao.NAO, Id = 1
            };
            var dtoMetaCampo2 = new DtoMetaCampo {
                Obrigatorio = EnumSimNao.SIM, Id = 1
            };

            var compare = new CompareLogic(config);

            var result = compare.Compare(dtoMetaCampo1, dtoMetaCampo2);

            Assert.IsTrue(result.AreEqual);
        }