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); }
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); }
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); }
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); }
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); }
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)); }
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)