public void VerifyMemberOverloadUsesSubsetOfAllTypeVerifiers() { PropertyInfo propertyToVerify = typeof(string).GetProperty("Length"); IMemberVerifier verifier1 = Substitute.For <IMemberVerifier>(); verifier1.Aspects.Returns(new[] { MemberVerificationAspect.PropertyType }); IMemberVerifier verifier2 = Substitute.For <IMemberVerifier>(); verifier2.Aspects.Returns(new[] { MemberVerificationAspect.PropertyIsStatic }); IStructureService service = Substitute.For <IStructureService>(); service.VerifyMember(propertyToVerify, new[] { verifier1, verifier2 }, MemberVerificationAspect.PropertyType); service.Received().VerifyMember(propertyToVerify, new[] { verifier1 }); }
public void VerifyMemberOverloadUsesAllMemberVerifiers() { PropertyInfo propertyToVerify = typeof(string).GetProperty("Length"); // The verifiers must have aspects as StructureService depends on aspect to use the verifier IMemberVerifier verifier1 = Substitute.For <IMemberVerifier>(); verifier1.Aspects.Returns(new[] { MemberVerificationAspect.PropertyType }); IMemberVerifier verifier2 = Substitute.For <IMemberVerifier>(); verifier2.Aspects.Returns(new[] { MemberVerificationAspect.PropertyIsStatic }); StructureService service = new StructureService("TestTools_Tests.Structure", "TestTools_Tests.Structure"); service.VerifyMember(propertyToVerify, new[] { verifier1, verifier2 }); verifier1.Received().Verify(propertyToVerify, propertyToVerify); verifier2.Received().Verify(propertyToVerify, propertyToVerify); }
public void VerifyMember(MemberInfo original, IMemberVerifier[] verifiers) { Type translatedType = TranslateType(original.DeclaringType); MemberInfo translatedMember = TranslateMember(translatedType, original); foreach (MemberVerificationAspect aspect in MemberVerificationOrder) { IMemberVerifier defaultVerifier = verifiers.FirstOrDefault(ver => ver.Aspects.Contains(aspect)); IMemberVerifier verifier = original.GetCustomVerifier(aspect) ?? defaultVerifier; if (verifier != null) { verifier.Verifier = StructureVerifier; verifier.Service = this; verifier.Verify(original, translatedMember); } } }