public void GetCandidateMessageProviderTypesShouldAlwaysReturnWrappedResults([Frozen] IGetsCandidateMessageTypes wrapped,
                                                                              RuleWithMessageCandidateTypeDecorator sut,
                                                                              MessageProviderTypeInfo typeInfo1,
                                                                              MessageProviderTypeInfo typeInfo2,
                                                                              MessageProviderTypeInfo typeInfo3,
                                                                              [RuleResult] ValidationRuleResult result)
 {
     Mock.Get(wrapped).Setup(x => x.GetCandidateMessageProviderTypes(result)).Returns(new[] { typeInfo1, typeInfo2, typeInfo3 });
     Assert.That(() => sut.GetCandidateMessageProviderTypes(result), Is.SupersetOf(new[] { typeInfo1, typeInfo2, typeInfo3 }));
 }
 public void GetCandidateMessageProviderTypeShouldNotAddAResultIfTheRuleObjectDoesNotMatchTheRuleWithMessageInterface([Frozen] IGetsCandidateMessageTypes wrapped,
                                                                                                                      RuleWithMessageCandidateTypeDecorator sut,
                                                                                                                      [RuleResult(RuleInterface = typeof(IRule <string>))] ValidationRuleResult result)
 {
     Mock.Get(wrapped).Setup(x => x.GetCandidateMessageProviderTypes(result)).Returns(Array.Empty <MessageProviderTypeInfo>());
     Mock.Get(result.ValidationLogic).SetupGet(x => x.RuleObject).Returns(new DoubleGenericRuleWithMessage());
     Assert.That(() => sut.GetCandidateMessageProviderTypes(result), Is.Empty);
 }
 public void GetCandidateMessageProviderTypeShouldAddAResultForASingleGenericRuleWithMessageWhenItMatches([Frozen] IGetsCandidateMessageTypes wrapped,
                                                                                                          RuleWithMessageCandidateTypeDecorator sut,
                                                                                                          [RuleResult(RuleInterface = typeof(IRule <string>))] ValidationRuleResult result)
 {
     Mock.Get(wrapped).Setup(x => x.GetCandidateMessageProviderTypes(result)).Returns(Array.Empty <MessageProviderTypeInfo>());
     Mock.Get(result.ValidationLogic).SetupGet(x => x.RuleObject).Returns(new SingleGenericRuleWithMessage());
     Assert.That(() => sut.GetCandidateMessageProviderTypes(result), Has.One.InstanceOf <InstanceMessageProviderInfo>());
 }