public void RequiredComponentTypeValidator_IsValid_NotValid()
        {
            MockGeneticAlgorithm algorithm = new MockGeneticAlgorithm();

            CustomValidator validator = new CustomValidator(typeof(MockEntity), typeof(GeneticEntity))
            {
                HasRequiredComponentReturnValue = false,
                ExpectedGeneticAlgorithm        = algorithm
            };

            bool result = validator.IsValid(algorithm, out string errorMessage);

            Assert.False(result);
            Assert.NotNull(errorMessage);
        }
        public void RequiredComponentTypeValidator_IsValid_WithNonAlgorithmComponent()
        {
            MockGeneticAlgorithm algorithm = new MockGeneticAlgorithm();

            CustomValidator validator = new CustomValidator(typeof(MockEntity), typeof(GeneticEntity))
            {
                HasRequiredComponentReturnValue = true,
                ExpectedGeneticAlgorithm        = algorithm
            };

            MockTerminator terminator = new MockTerminator();

            terminator.Initialize(algorithm);

            bool result = validator.IsValid(terminator, out string errorMessage);

            Assert.True(result);
            Assert.Null(errorMessage);
        }
Пример #3
0
        protected override ValidationResult IsValid(Object value, ValidationContext validationContext)
        {
            if (value == null)
            {
                return(ValidationResult.Success);
            }

            var validatorConfig = (NameValueCollection)ConfigurationManager.GetSection("CustomConfig/CustomValidatorConfig");
            var validationRules = validatorConfig.AllKeys
                                  .Select(key => new { PropertyName = key, ValidationRule = validatorConfig.GetValues(key).FirstOrDefault() })
                                  .ToList();

            var errorMessages = new List <string>(validationRules.Count);

            foreach (var validationRule in validationRules)
            {
                var property = value.GetType().GetProperty(validationRule.PropertyName);
                if (property == null)
                {
                    continue;
                }

                var propValue = property.GetValue(value);
                var isValid   = CustomValidator.IsValid(propValue, validationRule.ValidationRule);

                if (!isValid)
                {
                    errorMessages.Add(FormatErrorMessage(validationRule.PropertyName));
                }
            }


            if (errorMessages.Any())
            {
                return(new ValidationResult(string.Join("\r\n", errorMessages)));
            }

            return(ValidationResult.Success);
        }
        public void RequiredComponentTypeValidator_IsValid_NoAlgorithm()
        {
            CustomValidator validator = new CustomValidator(typeof(MockEntity), typeof(GeneticEntity));

            Assert.Throws <ArgumentException>(() => validator.IsValid(new MockTerminator(), out string errorMessage));
        }
        public void RequiredComponentTypeValidator_IsValid_NullComponent()
        {
            CustomValidator validator = new CustomValidator(typeof(MockEntity), typeof(GeneticEntity));

            Assert.Throws <ArgumentNullException>(() => validator.IsValid(null, out string errorMessage));
        }