Пример #1
0
        public static IGuardClauseWithInput <DateTime> NotOutOfSqlDateRange(this IGuardClauseWithInput <DateTime> guardClause, string?errorMessage = null)
        {
            const long sqlMinDateTicks = 552877920000000000;
            const long sqlMaxDateTicks = 3155378975999970000;

            return(guardClause.NotOutOfRange(new DateTime(sqlMinDateTicks), new DateTime(sqlMaxDateTicks), errorMessage: errorMessage));
        }
        public static IGuardClauseWithInput <string> NotMatch(this IGuardClauseWithInput <string> guardClause, string pattern, RegexOptions options = RegexOptions.None, string?errorMessage = null)
        {
            if (Regex.IsMatch(guardClause.Input, pattern, options))
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"{guardClause.Name} was in a format that is not allowed."));
            }

            return(guardClause);
        }
        public static IGuardClauseWithInput <string> Match(this IGuardClauseWithInput <string> guardClause, string pattern, RegexOptions options = RegexOptions.None, string?errorMessage = null)
        {
            if (!Regex.IsMatch(guardClause.Input, pattern, options))
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"{guardClause.Name} was not in the required format."));
            }

            return(guardClause);
        }
Пример #4
0
        public static IGuardClauseWithInput <T> Must <T>(this IGuardClauseWithInput <T> guardClause, Func <T, bool> predicate, string?errorMessage = null)
        {
            if (!predicate.Invoke(guardClause.Input))
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"Input {guardClause.Name} does not satisfy precondition."));
            }

            return(guardClause);
        }
        public static IGuardClauseWithInput <string> NotNullOrEmpty(this IGuardClauseWithInput <string> guardClause, string?errorMessage = null)
        {
            if (string.IsNullOrEmpty(guardClause.Input))
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"Required input {guardClause.Name} was empty."));
            }

            return(guardClause);
        }
Пример #6
0
        public static IGuardClauseWithInput <T> NotNull <T>(this IGuardClauseWithInput <T> guardClause, string?errorMessage = null)
        {
            if (guardClause.Input is null)
            {
                guardClause.Errors.Add(new ArgumentNullException(
                                           guardClause.Name, errorMessage ?? $"Required input {guardClause.Name} is null."));
            }

            return(guardClause);
        }
Пример #7
0
        public static IGuardClauseWithInput <T> NotDefault <T>(this IGuardClauseWithInput <T> guardClause, string?errorMessage = null)
        {
            if (EqualityComparer <T> .Default.Equals(guardClause.Input, default))
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"Required input {guardClause.Name} is empty."));
            }

            return(guardClause);
        }
        public static IGuardClauseWithInput <T> GreaterThan <T>(this IGuardClauseWithInput <T> guardClause, T minValue, string?errorMessage = null)
            where T : struct, IComparable <T>
        {
            if (guardClause.Input.CompareTo(minValue) <= 0)
            {
                guardClause.Errors.Add(new ArgumentOutOfRangeException(
                                           guardClause.Name, errorMessage ?? $"{guardClause.Name} be greater than {minValue}."));
            }

            return(guardClause);
        }
        public static IGuardClauseWithInput <T> LessThanOrEqualTo <T>(this IGuardClauseWithInput <T> guardClause, T maxValue, string?errorMessage = null)
            where T : struct, IComparable <T>
        {
            if (guardClause.Input.CompareTo(maxValue) > 0)
            {
                guardClause.Errors.Add(new ArgumentOutOfRangeException(
                                           guardClause.Name, errorMessage ?? $"{guardClause.Name} be less than or equal to {maxValue}."));
            }

            return(guardClause);
        }
Пример #10
0
        public static IGuardClauseWithInput <IEnumerable <T> > NotNullOrEmpty <T>(this IGuardClauseWithInput <IEnumerable <T> > guardClause, string?errorMessage = null)
        {
            NotNull(guardClause);

            if (!guardClause.Input.Any())
            {
                guardClause.Errors.Add(new ArgumentException(
                                           guardClause.Name, errorMessage ?? $"Required input {guardClause.Name} is empty."));
            }

            return(guardClause);
        }
Пример #11
0
        public static IGuardClauseWithInput <T> ThrowIfError <T>(this IGuardClauseWithInput <T> guardClause, Func <IGuardClause, Exception>?exceptionGenerator = null)
        {
            if (guardClause.HasFailed)
            {
                var exception = exceptionGenerator?.Invoke(guardClause)
                                ?? (guardClause.Errors.Count == 1
                        ? guardClause.Errors[0].Value
                        : new AggregateException(guardClause.Errors.GetExceptions()));
                throw exception;
            }

            return(guardClause);
        }
        public static IGuardClauseWithInput <string> Length(this IGuardClauseWithInput <string> guardClause, int minLength, int maxLength, string?errorMessage = null)
        {
            if (guardClause.Input != null)
            {
                if (guardClause.Input.Length < minLength)
                {
                    guardClause.Errors.Add(new ArgumentException(
                                               guardClause.Name, errorMessage ?? $"{guardClause.Name} must have at least {minLength} characters."));
                }

                if (guardClause.Input.Length > maxLength)
                {
                    guardClause.Errors.Add(new ArgumentException(
                                               guardClause.Name, errorMessage ?? $"{guardClause.Name} must have at most {maxLength} characters."));
                }
            }

            return(guardClause);
        }
 public static IGuardClauseWithInput <string> MaxLength(this IGuardClauseWithInput <string> guardClause, int maxLength, string?errorMessage = null)
 {
     return(guardClause.Length(int.MinValue, maxLength, errorMessage));
 }
Пример #14
0
        public static IGuardClauseWithInput <TNewInput> With <TCurrentInput, TNewInput>(this IGuardClauseWithInput <TCurrentInput> guardClause, TNewInput input, string name)
        {
            var newGuardClause = new Guard <TNewInput>(input, name);

            newGuardClause.Errors.AddRange(guardClause.Errors);
            return(newGuardClause);
        }
 public static IGuardClauseWithInput <T> Negative <T>(this IGuardClauseWithInput <T> guardClause, string?errorMessage = null)
     where T : struct, IComparable <T>
 {
     if (guardClause.Input.CompareTo(default) >= 0)