Skip to content

Commit 6532ca7

Browse files
committed
fix for not empty array
1 parent 3ece6f8 commit 6532ca7

File tree

3 files changed

+47
-25
lines changed

3 files changed

+47
-25
lines changed

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
33
<PropertyGroup>
4-
<Version>6.2.2</Version>
4+
<Version>6.2.3</Version>
55
<AssemblyVersion>1.0.0</AssemblyVersion>
66
<PackageTags>Polyfill</PackageTags>
77
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>

src/Polyfill/Guard_NotEmpty.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,18 @@ public static void NotEmpty<T>(
131131
}
132132
}
133133

134+
if (value is T[] array)
135+
{
136+
if (array.Length == 0)
137+
{
138+
throw new ArgumentException("Argument cannot be empty.", argumentName);
139+
}
140+
}
141+
134142
var enumerator = value.GetEnumerator();
135143
try
136144
{
137-
if (enumerator.MoveNext())
145+
if (!enumerator.MoveNext())
138146
{
139147
throw new ArgumentException("Argument cannot be empty.", argumentName);
140148
}

src/Tests/GuardTests.cs

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,33 @@
11
[TestFixture]
22
public class GuardTests
33
{
4-
string nullString = null!;
5-
List<string> nullList = null!;
6-
IList<string> nullIList = null!;
7-
IReadOnlyList<string> nullIReadOnlyList = null!;
8-
ICollection<string> nullICollection = null!;
9-
IReadOnlyCollection<string> nullIReadOnlyCollection = null!;
10-
IEnumerable<string> nullEnumerable = null!;
11-
string[] nullArray = null!;
12-
Dictionary<int, string> nullDictionary = null!;
13-
IDictionary<int, string> nullIDictionary = null!;
14-
IReadOnlyDictionary<int, string> nullIReadOnlyDictionary = null!;
15-
object nullObject = null!;
4+
static string nullString = null!;
5+
static List<string> nullList = null!;
6+
static IList<string> nullIList = null!;
7+
static IReadOnlyList<string> nullIReadOnlyList = null!;
8+
static ICollection<string> nullICollection = null!;
9+
static IReadOnlyCollection<string> nullIReadOnlyCollection = null!;
10+
static IEnumerable<string> nullEnumerable = null!;
11+
static string[] nullArray = null!;
12+
static Dictionary<int, string> nullDictionary = null!;
13+
static IDictionary<int, string> nullIDictionary = null!;
14+
static IReadOnlyDictionary<int, string> nullIReadOnlyDictionary = null!;
15+
static object nullObject = null!;
1616

17-
string emptyString = string.Empty;
18-
List<string> emptyList = [];
19-
IList<string> emptyIList = [];
20-
IReadOnlyList<string> emptyIReadOnlyList = [];
21-
ICollection<string> emptyICollection = [];
22-
IReadOnlyCollection<string> emptyIReadOnlyCollection = [];
23-
IEnumerable<string> emptyEnumerable = [];
24-
Dictionary<int, string> emptyDictionary = new();
25-
IDictionary<int, string> emptyIDictionary = new Dictionary<int, string>();
26-
IReadOnlyDictionary<int, string> emptyIReadOnlyDictionary = new Dictionary<int, string>();
27-
string[] emptyArray = [];
17+
static string emptyString = string.Empty;
18+
static List<string> emptyList = [];
19+
static IList<string> emptyIList = [];
20+
static IReadOnlyList<string> emptyIReadOnlyList = [];
21+
static ICollection<string> emptyICollection = [];
22+
static IReadOnlyCollection<string> emptyIReadOnlyCollection = [];
23+
static IEnumerable<string> emptyEnumerable = [];
24+
static Dictionary<int, string> emptyDictionary = new();
25+
static IDictionary<int, string> emptyIDictionary = new Dictionary<int, string>();
26+
static IReadOnlyDictionary<int, string> emptyIReadOnlyDictionary = new Dictionary<int, string>();
27+
static string[] emptyArray = [];
28+
static string[] nonEmptyArray = ["value"];
29+
static List<string> nonEmptyList = ["value"];
30+
static IEnumerable<string> nonEmptyEnumerable = nonEmptyList.Select(x => x);
2831

2932
[Test]
3033
public void NotNull()
@@ -53,6 +56,10 @@ public void NotNull()
5356
() => Guard.NotNull(nullIDictionary));
5457
Assert.Throws<ArgumentNullException>(
5558
() => Guard.NotNull(nullIReadOnlyDictionary));
59+
Guard.NotNull(nonEmptyArray);
60+
Guard.NotNull(nonEmptyEnumerable);
61+
Guard.NotNull("value");
62+
Guard.NotNull(nonEmptyEnumerable);
5663
}
5764

5865
[Test]
@@ -112,6 +119,10 @@ public void NotNullOrEmpty()
112119
() => Guard.NotNullOrEmpty(nullIDictionary));
113120
Assert.Throws<ArgumentNullException>(
114121
() => Guard.NotNullOrEmpty(nullIReadOnlyDictionary));
122+
Guard.NotNullOrEmpty(nonEmptyArray);
123+
Guard.NotNullOrEmpty(nonEmptyEnumerable);
124+
Guard.NotNullOrEmpty("value");
125+
Guard.NotNullOrEmpty(nonEmptyEnumerable);
115126
}
116127

117128
[Test]
@@ -166,6 +177,9 @@ public void NotEmpty()
166177
Guard.NotEmpty(nullIReadOnlyList);
167178
Guard.NotEmpty(nullIReadOnlyCollection);
168179
Guard.NotEmpty(nullArray);
180+
Guard.NotEmpty(nonEmptyArray);
181+
Guard.NotEmpty("value");
182+
Guard.NotEmpty(nonEmptyList);
169183
Guard.NotEmpty(nullEnumerable);
170184
Guard.NotEmpty(nullDictionary);
171185
Guard.NotEmpty(nullIDictionary);

0 commit comments

Comments
 (0)