< Summary

Information
Class: Allyaria.Abstractions.Extensions.AryValidationExtensions
Assembly: Allyaria.Abstractions
File(s): /home/runner/work/allyaria/allyaria/src/Allyaria.Abstractions/Extensions/AryValidationExtensions.cs
Line coverage
100%
Covered lines: 60
Uncovered lines: 0
Coverable lines: 60
Total lines: 265
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Between(...)100%11100%
Check(...)100%11100%
EnumDefined(...)100%11100%
EqualTo(...)100%11100%
False(...)100%11100%
GreaterThan(...)100%11100%
GreaterThanOrEqualTo(...)100%11100%
InRange(...)100%11100%
IsAssignableTo(...)100%11100%
LessThan(...)100%11100%
LessThanOrEqualTo(...)100%11100%
NotDefault(...)100%11100%
NotEqualTo(...)100%11100%
NotNull(...)100%11100%
NotNullOrEmpty(...)100%11100%
NotNullOrEmpty(...)100%11100%
NotNullOrWhiteSpace(...)100%11100%
SameTypeAs(...)100%11100%
True(...)100%11100%

File(s)

/home/runner/work/allyaria/allyaria/src/Allyaria.Abstractions/Extensions/AryValidationExtensions.cs

#LineLine coverage
 1namespace Allyaria.Abstractions.Extensions;
 2
 3/// <summary>
 4/// Provides a set of extension methods for <see cref="AryValidation{T}" /> that enable fluent-style argument validation
 5/// using <see cref="AryChecks" />.
 6/// </summary>
 7public static class AryValidationExtensions
 8{
 9    /// <summary>Validates that the current value is within the specified exclusive range.</summary>
 10    /// <typeparam name="T">A comparable type.</typeparam>
 11    /// <param name="validation">The current validation context.</param>
 12    /// <param name="min">The minimum exclusive bound.</param>
 13    /// <param name="max">The maximum exclusive bound.</param>
 14    /// <returns>The same validation context.</returns>
 15    public static AryValidation<T> Between<T>(this AryValidation<T> validation, T min, T max)
 16        where T : IComparable<T>
 17    {
 218        validation.Add(
 219            ex: AryChecks.Between(value: validation.ArgValue, min: min, max: max, argName: validation.ArgName)
 220        );
 21
 222        return validation;
 23    }
 24
 25    /// <summary>Validates a custom condition and associates a custom message when it fails.</summary>
 26    /// <typeparam name="T">The argument type.</typeparam>
 27    /// <param name="validation">The current validation context.</param>
 28    /// <param name="condition">The boolean condition to evaluate.</param>
 29    /// <param name="message">The error message to associate with the failure.</param>
 30    /// <returns>The same validation context.</returns>
 31    public static AryValidation<T> Check<T>(this AryValidation<T> validation, bool condition, string message)
 32    {
 233        validation.Add(ex: AryChecks.Check(condition: condition, argName: validation.ArgName, message: message));
 34
 235        return validation;
 36    }
 37
 38    /// <summary>Validates that the current argument value is a defined enumeration constant.</summary>
 39    /// <typeparam name="T">The enumeration type.</typeparam>
 40    /// <param name="validation">The current validation context.</param>
 41    /// <returns>The same <see cref="AryValidation{T}" /> for chaining.</returns>
 42    public static AryValidation<T> EnumDefined<T>(this AryValidation<T> validation)
 43        where T : struct, Enum
 44    {
 245        validation.Add(ex: AryChecks.EnumDefined(value: validation.ArgValue, argName: validation.ArgName));
 46
 247        return validation;
 48    }
 49
 50    /// <summary>Validates that the current value equals a specified comparison value.</summary>
 51    /// <typeparam name="T">The value type.</typeparam>
 52    /// <param name="validation">The current validation context.</param>
 53    /// <param name="compare">The value to compare against.</param>
 54    /// <returns>The same <see cref="AryValidation{T}" /> for chaining.</returns>
 55    public static AryValidation<T> EqualTo<T>(this AryValidation<T> validation, T compare)
 56        where T : IEquatable<T>
 57    {
 258        validation.Add(
 259            ex: AryChecks.EqualTo(value: validation.ArgValue, compare: compare, argName: validation.ArgName)
 260        );
 61
 262        return validation;
 63    }
 64
 65    /// <summary>Validates that the specified condition is <c>false</c>.</summary>
 66    /// <typeparam name="T">The type of the argument being validated.</typeparam>
 67    /// <param name="validation">The current validation context.</param>
 68    /// <param name="condition">The condition to test.</param>
 69    /// <returns>The same validation context.</returns>
 70    public static AryValidation<T> False<T>(this AryValidation<T> validation, bool condition)
 71    {
 272        validation.Add(ex: AryChecks.False(condition: condition, argName: validation.ArgName));
 73
 274        return validation;
 75    }
 76
 77    /// <summary>Validates that the current value is greater than a specified minimum (exclusive).</summary>
 78    /// <typeparam name="T">A comparable type.</typeparam>
 79    /// <param name="validation">The current validation context.</param>
 80    /// <param name="minExclusive">The exclusive lower bound.</param>
 81    /// <returns>The same validation context.</returns>
 82    public static AryValidation<T> GreaterThan<T>(this AryValidation<T> validation, T minExclusive)
 83        where T : IComparable<T>
 84    {
 285        validation.Add(
 286            ex: AryChecks.GreaterThan(
 287                value: validation.ArgValue, minExclusive: minExclusive, argName: validation.ArgName
 288            )
 289        );
 90
 291        return validation;
 92    }
 93
 94    /// <summary>Validates that the current value is greater than or equal to a specified minimum (inclusive).</summary>
 95    /// <typeparam name="T">A comparable type.</typeparam>
 96    /// <param name="validation">The current validation context.</param>
 97    /// <param name="minInclusive">The inclusive lower bound.</param>
 98    /// <returns>The same validation context.</returns>
 99    public static AryValidation<T> GreaterThanOrEqualTo<T>(this AryValidation<T> validation, T minInclusive)
 100        where T : IComparable<T>
 101    {
 2102        validation.Add(
 2103            ex: AryChecks.GreaterThanOrEqualTo(
 2104                value: validation.ArgValue, minInclusive: minInclusive, argName: validation.ArgName
 2105            )
 2106        );
 107
 2108        return validation;
 109    }
 110
 111    /// <summary>Validates that the current value is within the specified inclusive range.</summary>
 112    /// <typeparam name="T">A comparable type.</typeparam>
 113    /// <param name="validation">The current validation context.</param>
 114    /// <param name="min">The minimum inclusive bound.</param>
 115    /// <param name="max">The maximum inclusive bound.</param>
 116    /// <returns>The same validation context.</returns>
 117    public static AryValidation<T> InRange<T>(this AryValidation<T> validation, T min, T max)
 118        where T : IComparable<T>
 119    {
 2120        validation.Add(
 2121            ex: AryChecks.InRange(value: validation.ArgValue, min: min, max: max, argName: validation.ArgName)
 2122        );
 123
 2124        return validation;
 125    }
 126
 127    /// <summary>Validates that the current value is assignable to a target type.</summary>
 128    /// <typeparam name="T">The source type.</typeparam>
 129    /// <typeparam name="TTarget">The target type.</typeparam>
 130    /// <param name="validation">The current validation context.</param>
 131    /// <returns>The same validation context.</returns>
 132    public static AryValidation<T> IsAssignableTo<T, TTarget>(this AryValidation<T> validation)
 133    {
 2134        validation.Add(ex: AryChecks.IsAssignableTo<TTarget>(value: validation.ArgValue, argName: validation.ArgName));
 135
 2136        return validation;
 137    }
 138
 139    /// <summary>Validates that the current value is less than the specified maximum (exclusive).</summary>
 140    /// <typeparam name="T">A comparable type.</typeparam>
 141    /// <param name="validation">The current validation context.</param>
 142    /// <param name="maxExclusive">The exclusive upper bound.</param>
 143    /// <returns>The same validation context.</returns>
 144    public static AryValidation<T> LessThan<T>(this AryValidation<T> validation, T maxExclusive)
 145        where T : IComparable<T>
 146    {
 2147        validation.Add(
 2148            ex: AryChecks.LessThan(value: validation.ArgValue, maxExclusive: maxExclusive, argName: validation.ArgName)
 2149        );
 150
 2151        return validation;
 152    }
 153
 154    /// <summary>Validates that the current value is less than or equal to the specified maximum (inclusive).</summary>
 155    /// <typeparam name="T">A comparable type.</typeparam>
 156    /// <param name="validation">The current validation context.</param>
 157    /// <param name="maxInclusive">The inclusive upper bound.</param>
 158    /// <returns>The same validation context.</returns>
 159    public static AryValidation<T> LessThanOrEqualTo<T>(this AryValidation<T> validation, T maxInclusive)
 160        where T : IComparable<T>
 161    {
 2162        validation.Add(
 2163            ex: AryChecks.LessThanOrEqualTo(
 2164                value: validation.ArgValue, maxInclusive: maxInclusive, argName: validation.ArgName
 2165            )
 2166        );
 167
 2168        return validation;
 169    }
 170
 171    /// <summary>Validates that the current value is not its type’s default value.</summary>
 172    /// <typeparam name="T">A struct type.</typeparam>
 173    /// <param name="validation">The current validation context.</param>
 174    /// <returns>The same validation context.</returns>
 175    public static AryValidation<T> NotDefault<T>(this AryValidation<T> validation)
 176        where T : struct, IEquatable<T>
 177    {
 2178        validation.Add(ex: AryChecks.NotDefault(value: validation.ArgValue, argName: validation.ArgName));
 179
 2180        return validation;
 181    }
 182
 183    /// <summary>Validates that the current value is not equal to the specified comparison value.</summary>
 184    /// <typeparam name="T">A struct type.</typeparam>
 185    /// <param name="validation">The current validation context.</param>
 186    /// <param name="compare">The value to compare against.</param>
 187    /// <returns>The same validation context.</returns>
 188    public static AryValidation<T> NotEqualTo<T>(this AryValidation<T> validation, T compare)
 189        where T : IEquatable<T>
 190    {
 2191        validation.Add(
 2192            ex: AryChecks.NotEqualTo(value: validation.ArgValue, compare: compare, argName: validation.ArgName)
 2193        );
 194
 2195        return validation;
 196    }
 197
 198    /// <summary>Validates that the current value is not <c>null</c>.</summary>
 199    /// <typeparam name="T">The type of the argument being validated.</typeparam>
 200    /// <param name="validation">The current validation context.</param>
 201    /// <returns>The same validation context.</returns>
 202    public static AryValidation<T> NotNull<T>(this AryValidation<T> validation)
 203    {
 2204        validation.Add(ex: AryChecks.NotNull(value: validation.ArgValue, argName: validation.ArgName));
 205
 2206        return validation;
 207    }
 208
 209    /// <summary>Validates that the current string value is not null or empty.</summary>
 210    /// <param name="validation">The current validation context.</param>
 211    /// <returns>The same validation context.</returns>
 212    public static AryValidation<string?> NotNullOrEmpty(this AryValidation<string?> validation)
 213    {
 2214        validation.Add(ex: AryChecks.NotNullOrEmpty(value: validation.ArgValue, argName: validation.ArgName));
 215
 2216        return validation;
 217    }
 218
 219    /// <summary>Validates that the current collection is not null or empty.</summary>
 220    /// <typeparam name="TItem">The type of elements in the collection.</typeparam>
 221    /// <param name="validation">The current validation context.</param>
 222    /// <returns>The same validation context.</returns>
 223    public static AryValidation<IReadOnlyCollection<TItem>?> NotNullOrEmpty<TItem>(
 224        this AryValidation<IReadOnlyCollection<TItem>?> validation)
 225    {
 2226        validation.Add(ex: AryChecks.NotNullOrEmpty(collection: validation.ArgValue, argName: validation.ArgName));
 227
 2228        return validation;
 229    }
 230
 231    /// <summary>Validates that the current string value is not null, empty, or whitespace.</summary>
 232    /// <param name="validation">The current validation context.</param>
 233    /// <returns>The same validation context.</returns>
 234    public static AryValidation<string?> NotNullOrWhiteSpace(this AryValidation<string?> validation)
 235    {
 2236        validation.Add(ex: AryChecks.NotNullOrWhiteSpace(value: validation.ArgValue, argName: validation.ArgName));
 237
 2238        return validation;
 239    }
 240
 241    /// <summary>Validates that the current value is of the same runtime type as another specified value.</summary>
 242    /// <typeparam name="T">The current argument type.</typeparam>
 243    /// <typeparam name="TOther">The comparison type.</typeparam>
 244    /// <param name="validation">The current validation context.</param>
 245    /// <param name="other">The value to compare against.</param>
 246    /// <returns>The same validation context.</returns>
 247    public static AryValidation<T> SameTypeAs<T, TOther>(this AryValidation<T> validation, TOther other)
 248    {
 2249        validation.Add(ex: AryChecks.SameType(value1: validation.ArgValue, value2: other, argName: validation.ArgName));
 250
 2251        return validation;
 252    }
 253
 254    /// <summary>Validates that a specified condition is <c>true</c>.</summary>
 255    /// <typeparam name="T">The argument type.</typeparam>
 256    /// <param name="validation">The current validation context.</param>
 257    /// <param name="condition">The boolean condition to evaluate.</param>
 258    /// <returns>The same validation context.</returns>
 259    public static AryValidation<T> True<T>(this AryValidation<T> validation, bool condition)
 260    {
 2261        validation.Add(ex: AryChecks.True(condition: condition, argName: validation.ArgName));
 262
 2263        return validation;
 264    }
 265}