public void NormalizeForAnyCountry_ValidNationalIdentifier_ReturnsNormalizedValue(
            string nationalIdentifier, string expected)
        {
            var result = NationalIdentifierValidator.NormalizeForAnyCountry(nationalIdentifier);

            Assert.That(result, Is.EqualTo(expected));
        }
        public void NormalizeForAnyCountry_InvalidNationalIdentifier_ThrowsArgumentException(string nationalIdentifier)
        {
            var ex = Assert.Throws <ArgumentException>(() => NationalIdentifierValidator.NormalizeForAnyCountry(nationalIdentifier));

            Assert.That(ex.ParamName, Is.EqualTo("nationalIdentifier"), nameof(ex.ParamName));
            Assert.That(ex.Message,
                        Does.Contain(nationalIdentifier ?? string.Empty),
                        nameof(ex.Message));
        }
        protected override ValidationResult IsValid(object value, ValidationContext context)
        {
            var nationalIdentifier = value as string;

            if (_countryCode == null)
            {
                return(NationalIdentifierValidator.IsValidInAnyCountry(nationalIdentifier)
                    ? ValidationResult.Success
                    : new ValidationResult(ErrorMessages.GetInvalidIdentifierMessage(nationalIdentifier)));
            }

            var countryCode = (CountryCode)_countryCode;
            var validator   = NationalIdentifierValidator.GetValidator(countryCode);

            return(validator.IsValid(nationalIdentifier)
                ? ValidationResult.Success
                : new ValidationResult(
                       ErrorMessages.GetInvalidIdentifierMessage(nationalIdentifier, countryCode)));
        }
        public void IsValidInAnyCountry_InvalidNationalIdentifier_ReturnsFalse(string nationalIdentifier)
        {
            var result = NationalIdentifierValidator.IsValidInAnyCountry(nationalIdentifier);

            Assert.That(result, Is.False);
        }
        public void GetValidator_Country_ReturnsCorrectValidator(CountryCode countryCode, Type type)
        {
            var result = NationalIdentifierValidator.GetValidator(countryCode);

            Assert.That(result, Is.AssignableFrom(type));
        }