Skip to content

Commit d4153a7

Browse files
committed
add return-based asserts
1 parent 0c14cea commit d4153a7

2 files changed

Lines changed: 137 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Runtime.CompilerServices;
2+
using Original = System;
3+
4+
namespace Falko.Common.Asserts;
5+
6+
// ReSharper disable RedundantNameQualifier
7+
public static partial class Return
8+
{
9+
public static class ArgumentNullException
10+
{
11+
public static T ThrowIfNull<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
12+
{
13+
Original.ArgumentNullException.ThrowIfNull(value, paramName);
14+
15+
return value;
16+
}
17+
18+
public static string ThrowIfNullOrWhiteSpace(string? value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
19+
{
20+
Original.ArgumentException.ThrowIfNullOrWhiteSpace(value, paramName);
21+
22+
return value;
23+
}
24+
25+
public static string ThrowIfNullOrEmpty(string? value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
26+
{
27+
Original.ArgumentException.ThrowIfNullOrEmpty(value, paramName);
28+
29+
return value;
30+
}
31+
}
32+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using System.Numerics;
2+
using System.Runtime.CompilerServices;
3+
using Original = System;
4+
5+
namespace Falko.Common.Asserts;
6+
7+
public static partial class Return
8+
{
9+
public static class ArgumentOutOfRangeException
10+
{
11+
public static T ThrowIfEqual<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
12+
where T : IEquatable<T>?
13+
{
14+
Original.ArgumentOutOfRangeException.ThrowIfEqual(value, other, paramName);
15+
16+
return value;
17+
}
18+
19+
public static T ThrowIfNotEqual<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
20+
where T : IEquatable<T>?
21+
{
22+
Original.ArgumentOutOfRangeException.ThrowIfNotEqual(value, other, paramName);
23+
24+
return value;
25+
}
26+
27+
public static T ThrowIfGreaterThan<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
28+
where T : IComparable<T>
29+
{
30+
Original.ArgumentOutOfRangeException.ThrowIfGreaterThan(value, other, paramName);
31+
32+
return value;
33+
}
34+
35+
public static T ThrowIfGreaterThanOrEqual<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
36+
where T : IComparable<T>
37+
{
38+
Original.ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(value, other, paramName);
39+
40+
return value;
41+
}
42+
43+
public static T ThrowIfLessThan<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
44+
where T : IComparable<T>
45+
{
46+
Original.ArgumentOutOfRangeException.ThrowIfLessThan(value, other, paramName);
47+
48+
return value;
49+
}
50+
51+
public static T ThrowIfLessThanOrEqual<T>(T value, T other, [CallerArgumentExpression(nameof(value))] string? paramName = null)
52+
where T : IComparable<T>
53+
{
54+
Original.ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(value, other, paramName);
55+
56+
return value;
57+
}
58+
59+
public static T ThrowIfZero<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
60+
where T : INumberBase<T>
61+
{
62+
Original.ArgumentOutOfRangeException.ThrowIfZero(value, paramName);
63+
64+
return value;
65+
}
66+
67+
public static T ThrowIfNegative<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
68+
where T : INumberBase<T>
69+
{
70+
Original.ArgumentOutOfRangeException.ThrowIfNegative(value, paramName);
71+
72+
return value;
73+
}
74+
75+
public static T ThrowIfNegativeOrZero<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
76+
where T : INumberBase<T>
77+
{
78+
Original.ArgumentOutOfRangeException.ThrowIfNegativeOrZero(value, paramName);
79+
80+
return value;
81+
}
82+
83+
public static T ThrowIfPositive<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
84+
where T : INumberBase<T>
85+
{
86+
if (T.IsPositive(value))
87+
{
88+
throw new Original.ArgumentOutOfRangeException(paramName, value, "Value must be positive.");
89+
}
90+
91+
return value;
92+
}
93+
94+
public static T ThrowIfPositiveOrZero<T>(T value, [CallerArgumentExpression(nameof(value))] string? paramName = null)
95+
where T : INumberBase<T>
96+
{
97+
if (T.IsZero(value) || T.IsPositive(value))
98+
{
99+
throw new Original.ArgumentOutOfRangeException(paramName, value, "Value must be positive or zero.");
100+
}
101+
102+
return value;
103+
}
104+
}
105+
}

0 commit comments

Comments
 (0)