/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { IbanCountry?country = GetMatchingCountry(context.Value); if (country is null) { return(new UnknownCountryCodeResult()); } context.Country = country; return(ValidationRuleResult.Success); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { string iban = context.Value; // First 2 chars must be a-z or A-Z. if (iban.Length < 2 || !iban[0].IsAsciiLetter() || !iban[1].IsAsciiLetter()) { return(new IllegalCountryCodeCharactersResult()); } return(ValidationRuleResult.Success); }
public void Given_country_info_is_null_when_validating_it_should_return_error() { var context = new ValidationRuleContext(string.Empty) { Country = null }; // Act ValidationRuleResult actual = _sut.Validate(context); // Assert actual.Should().BeOfType <InvalidLengthResult>(); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { string iban = context.Value; int length = iban.Length; var buffer = new char[length]; // Reorder (first 4 chars at end). iban.CopyTo(4, buffer, 0, length - 4); iban.CopyTo(0, buffer, length - 4, 4); return(_checkDigitsCalculator.Compute(buffer) == ExpectedCheckDigit ? ValidationRuleResult.Success : new InvalidCheckDigitsResult()); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { string iban = context.Value; if (iban.Length < 4 // 00 and 01 are invalid. || iban[2] == '0' && (iban[3] == '0' || iban[3] == '1') // 99 is invalid. || iban[2] == '9' && iban[3] == '9') { return(new IllegalCharactersResult()); } return(ValidationRuleResult.Success); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { if (context.Country is null) { return(new InvalidStructureResult()); } IStructureValidator validator = _structureValidationFactory.CreateValidator( context.Country.TwoLetterISORegionName, context.Country.Iban.Structure ); return(validator.Validate(context.Value) ? ValidationRuleResult.Success : new InvalidStructureResult()); }
public void Given_value_of_valid_length_when_validating_it_should_return_success() { string value = new string('0', 10); var context = new ValidationRuleContext(value) { Country = new IbanCountry("XX") { Iban = { Length = 10 } } }; // Act ValidationRuleResult actual = _sut.Validate(context); // Assert actual.Should().Be(ValidationRuleResult.Success); }
public void Given_value_of_invalid_length_when_validating_it_should_return_error(int count) { string value = new string('0', count); var context = new ValidationRuleContext(value) { Country = new IbanCountry("XX") { Iban = { Length = 10 } } }; // Act ValidationRuleResult actual = _sut.Validate(context); // Assert actual.Should().BeOfType <InvalidLengthResult>(); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { string iban = context.Value; // ReSharper disable once LoopCanBeConvertedToQuery : justification -> faster // ReSharper disable once ForCanBeConvertedToForeach : justification -> faster for (int i = 0; i < iban.Length; i++) { char c = iban[i]; // All chars must be 0-9, a-z or A-Z. if (!c.IsAlphaNumeric()) { return(new IllegalCharactersResult()); } } return(ValidationRuleResult.Success); }
public void Given_unknown_country_code_when_validating_it_should_return_error() { var context = new ValidationRuleContext("XX"); var sut = new IsValidCountryCodeRule(new IbanRegistry { Providers = { new IbanRegistryListProvider(new IbanCountry[0]) } }); // Act ValidationRuleResult actual = sut.Validate(new ValidationRuleContext("XX")); // Assert actual.Should().BeOfType <UnknownCountryCodeResult>(); context.Country.Should().BeNull(); }
public void Given_known_country_code_when_validating_it_should_return_success() { var context = new ValidationRuleContext("XX"); var country = new IbanCountry("XX"); var sut = new IsValidCountryCodeRule(new IbanRegistry { Providers = { new IbanRegistryListProvider(new[] { country }) } }); // Act ValidationRuleResult actual = sut.Validate(context); // Assert actual.Should().Be(ValidationRuleResult.Success); context.Country.Should().BeSameAs(country); }
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { return(context.Country is { } && context.Value.Length == context.Country.Iban.Length
/// <inheritdoc /> public ValidationRuleResult Validate(ValidationRuleContext context) { return(context.Value.Length == 0 ? new InvalidLengthResult() : ValidationRuleResult.Success); }