Skip to content

Commit a3695a5

Browse files
committed
docs and tests
1 parent 88a22cb commit a3695a5

8 files changed

Lines changed: 840 additions & 262 deletions

File tree

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
<SVPreview>-preview-0.3</SVPreview>
1414
</PropertyGroup>
1515
<PropertyGroup>
16-
<SPVer>1.0.0-preview-1.4</SPVer>
16+
<SPVer>1.0.0-preview-3.0</SPVer>
1717
</PropertyGroup>
1818
</Project>

RoyalCode.SmartValidations.Tests/BuildInPredicatesTests.EqualsNotEquals.cs

Lines changed: 159 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void String_Equals(string? value, string compare, StringComparison? compa
2626

2727
[Theory]
2828
[MemberData(nameof(Equitable_Data))]
29-
public void Equitable_Equals<T>(T value, T compare, bool expected)
29+
public void Equitable_Equals<T>(T? value, T compare, bool expected)
3030
where T : IEquatable<T>
3131
{
3232
// Arrange
@@ -37,6 +37,23 @@ public void Equitable_Equals<T>(T value, T compare, bool expected)
3737
Assert.Equal(expected, areEquals);
3838
}
3939

40+
[Theory]
41+
[InlineData(null, 0, false)]
42+
[InlineData(null, 1, false)]
43+
[InlineData(0, 0, true)]
44+
[InlineData(1, 1, true)]
45+
[InlineData(0, 1, false)]
46+
[InlineData(1, 0, false)]
47+
public void Equitable_Nulls_Equals(int? value1, int compare, bool expected)
48+
{
49+
// Arrange
50+
// Act
51+
var areEquals = BuildInPredicates.Equal(value1, compare);
52+
53+
// Assert
54+
Assert.Equal(expected, areEquals);
55+
}
56+
4057
[Theory]
4158
[InlineData("", "", null, false)]
4259
[InlineData("abc", "abc", null, false)]
@@ -57,7 +74,143 @@ public void String_NotEquals(string? value, string compare, StringComparison? co
5774
Assert.Equal(expected, areEquals);
5875
}
5976

60-
public static IEnumerable<object[]> Equitable_Data()
77+
[Theory]
78+
[MemberData(nameof(Equitable_Data))]
79+
public void Equitable_NotEquals<T>(T? value, T compare, bool notExpected)
80+
where T : IEquatable<T>
81+
{
82+
// Arrange
83+
var expected = !notExpected;
84+
85+
// Act
86+
var areEquals = BuildInPredicates.NotEqual(value, compare);
87+
88+
// Assert
89+
Assert.Equal(expected, areEquals);
90+
}
91+
92+
[Theory]
93+
[InlineData(null, 0, true)]
94+
[InlineData(null, 1, true)]
95+
[InlineData(0, 0, false)]
96+
[InlineData(1, 1, false)]
97+
[InlineData(0, 1, true)]
98+
[InlineData(1, 0, true)]
99+
public void Equitable_Nulls_NotEquals(int? value1, int compare, bool expected)
100+
{
101+
// Arrange
102+
// Act
103+
var areEquals = BuildInPredicates.NotEqual(value1, compare);
104+
105+
// Assert
106+
Assert.Equal(expected, areEquals);
107+
}
108+
109+
[Theory]
110+
[InlineData("", "", null, true)]
111+
[InlineData("abc", "abc", null, true)]
112+
[InlineData("abc", "abcdfg", null, false)]
113+
[InlineData("abc", "ABC", null, false)]
114+
[InlineData("abc", "ABC", StringComparison.OrdinalIgnoreCase, true)]
115+
[InlineData("abc", "ABCdfg", StringComparison.OrdinalIgnoreCase, false)]
116+
[InlineData(null, "", null, false)]
117+
[InlineData(null, null, null, true)]
118+
[InlineData(null, "abc", null, false)]
119+
[InlineData("abc", null, null, false)]
120+
public void String_BothEquals(string? value1, string? value2, StringComparison? comparison, bool expected)
121+
{
122+
// Arrange
123+
comparison ??= StringComparison.Ordinal;
124+
125+
// Act
126+
var areEquals = BuildInPredicates.BothEqual(value1, value2, comparison.Value);
127+
128+
// Assert
129+
Assert.Equal(expected, areEquals);
130+
}
131+
132+
[Theory]
133+
[MemberData(nameof(Equitable_Data))]
134+
public void Equitable_BothEquals<T>(T value1, T value2, bool expected)
135+
where T : IEquatable<T>
136+
{
137+
// Arrange
138+
// Act
139+
var areEquals = BuildInPredicates.BothEqual(value1, value2);
140+
141+
// Assert
142+
Assert.Equal(expected, areEquals);
143+
}
144+
145+
[Theory]
146+
[InlineData(null, null, true)]
147+
[InlineData(0, null, false)]
148+
[InlineData(null, 0, false)]
149+
[InlineData(0, 0, true)]
150+
public void Equitable_Nulls_BothEquals(int? value1, int? value2, bool expected)
151+
{
152+
// Arrange
153+
// Act
154+
var areEquals = BuildInPredicates.BothEqual(value1, value2);
155+
156+
// Assert
157+
Assert.Equal(expected, areEquals);
158+
}
159+
160+
[Theory]
161+
[InlineData("", "", null, false)]
162+
[InlineData("abc", "abc", null, false)]
163+
[InlineData("abc", "abcdfg", null, true)]
164+
[InlineData("abc", "ABC", null, true)]
165+
[InlineData("abc", "ABC", StringComparison.OrdinalIgnoreCase, false)]
166+
[InlineData("abc", "ABCdfg", StringComparison.OrdinalIgnoreCase, true)]
167+
[InlineData(null, "", null, true)]
168+
[InlineData(null, null, null, false)]
169+
[InlineData(null, "abc", null, true)]
170+
[InlineData("abc", null, null, true)]
171+
public void String_BothNotEquals(string? value1, string? value2, StringComparison? comparison, bool expected)
172+
{
173+
// Arrange
174+
comparison ??= StringComparison.Ordinal;
175+
176+
// Act
177+
var areEquals = BuildInPredicates.BothNotEqual(value1, value2, comparison.Value);
178+
179+
// Assert
180+
Assert.Equal(expected, areEquals);
181+
}
182+
183+
[Theory]
184+
[MemberData(nameof(Equitable_Data))]
185+
public void Equitable_BothNotEquals<T>(T value1, T value2, bool notExpected)
186+
where T : IEquatable<T>
187+
{
188+
// Arrange
189+
var expected = !notExpected;
190+
191+
// Act
192+
var areEquals = BuildInPredicates.BothNotEqual(value1, value2);
193+
194+
// Assert
195+
Assert.Equal(expected, areEquals);
196+
}
197+
198+
[Theory]
199+
[InlineData(null, null, false)]
200+
[InlineData(0, null, true)]
201+
[InlineData(null, 0, true)]
202+
[InlineData(0, 0, false)]
203+
public void Equitable_Nulls_BothNotEquals(int? value1, int? value2, bool expected)
204+
{
205+
// Arrange
206+
// Act
207+
var areEquals = BuildInPredicates.BothNotEqual(value1, value2);
208+
209+
// Assert
210+
Assert.Equal(expected, areEquals);
211+
}
212+
213+
public static IEnumerable<object?[]> Equitable_Data()
61214
{
62215
yield return [(byte)1, (byte)1, true];
63216
yield return [(byte)1, (byte)2, false];
@@ -75,5 +228,9 @@ public static IEnumerable<object[]> Equitable_Data()
75228
yield return [1M, 2M, false];
76229
yield return [BigInteger.One, BigInteger.One, true];
77230
yield return [BigInteger.One, BigInteger.Zero, false];
231+
yield return [(int?)1, (int?)1, true];
232+
yield return [(int?)1, (int?)2, false];
233+
yield return [(int?)null, (int?)1, false];
234+
yield return [(int?)null, (int?)0, true];
78235
}
79236
}

RoyalCode.SmartValidations.Tests/BuildInRulesTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
public class BuildInRulesTests
44
{
5+
[Theory]
6+
[MemberData(nameof(NotNull_Data))]
7+
public void NotNull<T>(T value, bool expectProblems)
8+
{
9+
// Arrange
10+
var rules = Rules.Set().NotNull(value);
11+
12+
// Act
13+
var hasProblems = rules.HasProblems(out var problems);
14+
15+
// Assert
16+
Assert.Equal(expectProblems, hasProblems);
17+
if (hasProblems)
18+
Assert.Single(problems!);
19+
else
20+
Assert.Null(problems);
21+
}
22+
523
[Theory]
624
[InlineData(null, true)]
725
[InlineData("", true)]
@@ -22,4 +40,13 @@ public void String_NotEmpty(string? value, bool expectProblems)
2240
else
2341
Assert.Null(problems);
2442
}
43+
44+
public static IEnumerable<object?[]> NotNull_Data()
45+
{
46+
yield return ["Hello", false];
47+
yield return ["", false];
48+
yield return [null, true];
49+
yield return [1, false];
50+
yield return [0, false];
51+
}
2552
}

0 commit comments

Comments
 (0)