public static bool TryGetArgumentException <T>(this IValidatableArgument <T> @validatableArgument, out ArgumentException argumentException) { if (@validatableArgument == null) { throw new ArgumentNullException("@validatableArgument"); } IValidationPredicateResult firstPredicateMatch = validatableArgument.MatchValidationPredicates().Where(vp => vp.IsMatch).FirstOrDefault(); if (firstPredicateMatch == null) { argumentException = null; return(false); } if (firstPredicateMatch.ValidationType == ValidationType.Range) { argumentException = new ArgumentOutOfRangeException(@validatableArgument.Name, firstPredicateMatch.Message); } else { if (validatableArgument.Value == null) { argumentException = new ArgumentNullException(@validatableArgument.Name, firstPredicateMatch.Message); } else { argumentException = new ArgumentException(firstPredicateMatch.Message, @validatableArgument.Name); } } return(true); }
public void ReturnTheSameInstance_WhenArgumentIsValidatableArgument() { // Arrange. IArgument <int> argument = new ValidatableArgument <int>("argument", 3); // Act. IValidatableArgument <int> validatableArgument = argument.ToValidatableArgument(); // Assert. Assert.AreSame(argument, validatableArgument); }
public void ThrowArgumentNullException_WhenValidatableArgumentIsNull() { // Arrange. IValidatableArgument <int> validatableArgument = null; // Act & Assert. Ensure.ArgumentNullExceptionIsThrown( () => { validatableArgument.Throw(); }, "@validatableArgument"); }
public void ReturnNewValidatableArgumentInstance_WhenArgumentIsNotValidatableArgument() { // Arrange. IArgument <int> argument = new IntArgumentMock(); // Act. IValidatableArgument <int> validatableArgument = argument.ToValidatableArgument(); // Assert. Assert.AreNotSame(argument, validatableArgument); Assert.AreEqual(argument.Name, validatableArgument.Name); Assert.AreEqual(argument.Value, validatableArgument.Value); }
public static void Throw <T>(this IValidatableArgument <T> @validatableArgument) { if (@validatableArgument == null) { throw new ArgumentNullException("@validatableArgument"); } ArgumentException argumentException = null; if (validatableArgument.TryGetArgumentException(out argumentException)) { throw argumentException; } }
public void ThrowException_WhenValidatableArgumentIsNull() { // Arrange. IValidatableArgument <int> validatableArgument = null; // Act & Assert. ArgumentException argumentException; Ensure.ArgumentNullExceptionIsThrown( () => { validatableArgument.TryGetArgumentException(out argumentException); }, "@validatableArgument"); }
public void AddTheGivenValidationPredicate_WhenValidationPredicateArgumentIsNotNull() { // Arrange. IArgument <int> argument = new ValidatableArgument <int>("argument", 3); IValidationPredicate <int> validationPredicate1 = new LessThanValidationPredicate <int>(3); IValidationPredicate <int> validationPredicate2 = new GreaterThanValidationPredicate <int>(4); // Act. IValidatableArgument <int> validatableArgument = argument.AddValidationPredicate(validationPredicate1); validatableArgument.AddValidationPredicate(validationPredicate2); // Assert. Assert.AreEqual(2, validatableArgument.ValidationPredicates.Count()); Assert.AreSame(validationPredicate1, validatableArgument.ValidationPredicates.First()); Assert.AreSame(validationPredicate2, validatableArgument.ValidationPredicates.Last()); }
public static IValidatableArgument <T> AddValidationPredicate <T>(this IArgument <T> @argument, IValidationPredicate <T> validationPredicate) { if (@argument == null) { throw new ArgumentNullException("@argument"); } if (validationPredicate == null) { throw new ArgumentNullException("validationPredicate"); } IValidatableArgument <T> validatableArgument = @argument.ToValidatableArgument(); validatableArgument.AddValidationPredicate(validationPredicate); return(validatableArgument); }