/// <summary>
        /// Initializes a new instance of the <see cref="DefaultValidationRuleResolver" />.
        /// </summary>
        public DefaultValidationRuleResolver(IbanValidatorOptions options)
        {
            _options = options ?? throw new ArgumentNullException(nameof(options));

            _structureValidationFactory = new CachedStructureValidationFactory(
                new CompositeStructureValidationFactory(
                    (options.Registry ?? throw new ArgumentException(Resources.ArgumentException_Registry_is_required, nameof(options))).Providers
                    )
                );
        }
예제 #2
0
        public void When_creating_with_null_structure_validation_factory_it_should_throw()
        {
            IStructureValidationFactory value = null;

            // Act
            // ReSharper disable once AssignNullToNotNullAttribute
            Action act = () => _sut.ValidationFactory = value;

            // Assert
            act.Should()
            .Throw <ArgumentNullException>()
            .Which.ParamName.Should()
            .Be(nameof(value));
        }
예제 #3
0
        public void When_creating_with_null_structure_validation_factory_it_should_throw()
        {
            IStructureValidationFactory structureValidationFactory = null;

            // Act
            // ReSharper disable once ObjectCreationAsStatement
            // ReSharper disable once AssignNullToNotNullAttribute
            Action act = () => new IbanStructure(string.Empty, structureValidationFactory);

            // Assert
            act.Should()
            .Throw <ArgumentNullException>()
            .Which.ParamName.Should()
            .Be(nameof(structureValidationFactory));
        }
예제 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="IbanValidator"/> class with specified registry.
        /// </summary>
        /// <param name="registry">The IBAN registry containing IBAN/BBAN/SEPA information per country.</param>
        // ReSharper disable once MemberCanBePrivate.Global
        public IbanValidator(Lazy <IReadOnlyCollection <CountryInfo> > registry)
        {
            _registry = registry ?? throw new ArgumentNullException(nameof(registry));

            _structureValidationFactory = new CachedStructureValidationFactory(new SwiftStructureValidationFactory());
            _rules = new Collection <IIbanValidationRule>
            {
                new NotNullRule(),
                new NoIllegalCharactersRule(),
                new HasCountryCodeRule(),
                new HasIbanChecksumRule(),
                new IsValidCountryCodeRule(),
                new IsValidLengthRule(),
                new IsMatchingStructureRule(_structureValidationFactory),
                new Mod97Rule()
            };
        }
예제 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StructureSection" /> class using specified parameters.
 /// </summary>
 /// <param name="structure">The structure.</param>
 /// <param name="structureValidationFactory">The structure validation factory.</param>
 // ReSharper disable once UnusedMember.Global
 public BbanStructure(string structure, IStructureValidationFactory structureValidationFactory)
     : base(structure, structureValidationFactory)
 {
 }
예제 #6
0
 public IsMatchingStructureRule(IStructureValidationFactory structureValidationFactory)
 {
     _structureValidationFactory = structureValidationFactory ?? throw new ArgumentNullException(nameof(structureValidationFactory));
 }
예제 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StructureSection" /> class using specified parameters.
 /// </summary>
 /// <param name="structure">The structure.</param>
 /// <param name="structureValidationFactory">The validation factory.</param>
 // ReSharper disable once UnusedMember.Global
 protected StructureSection(string structure, IStructureValidationFactory structureValidationFactory)
 {
     _example   = string.Empty;
     _structure = structure ?? throw new ArgumentNullException(nameof(structure));
     _structureValidationFactory = structureValidationFactory ?? throw new ArgumentNullException(nameof(structureValidationFactory));
 }
예제 #8
0
        public CachedStructureValidationFactory(IStructureValidationFactory innerFactory)
        {
            _innerFactory = innerFactory ?? throw new ArgumentNullException(nameof(innerFactory));

            _cache = new ConcurrentDictionary <string, IStructureValidator>();
        }