Skip to content

Commit e8db798

Browse files
committed
feat: add IsEmptyOrWhiteSpace for Memory<T> and ReadOnlyMemory<T>
Signed-off-by: Kenny Pflug <kenny.pflug@live.de>
1 parent 32a7aa9 commit e8db798

2 files changed

Lines changed: 70 additions & 0 deletions

File tree

Code/Light.GuardClauses.Tests/StringAssertions/IsEmptyOrWhiteSpaceTests.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,60 @@ public static void MixedReadOnlySpan()
6161
var readOnlySpan = " a\t".AsSpan();
6262
readOnlySpan.IsEmptyOrWhiteSpace().Should().BeFalse();
6363
}
64+
65+
[Fact]
66+
public static void EmptyMemory()
67+
{
68+
var memory = new Memory<char>([]);
69+
memory.IsEmptyOrWhiteSpace().Should().BeTrue();
70+
}
71+
72+
[Fact]
73+
public static void WhiteSpaceMemory()
74+
{
75+
var memory = new Memory<char>(" \t\n".ToCharArray());
76+
memory.IsEmptyOrWhiteSpace().Should().BeTrue();
77+
}
78+
79+
[Fact]
80+
public static void NonWhiteSpaceMemory()
81+
{
82+
var memory = new Memory<char>("abc".ToCharArray());
83+
memory.IsEmptyOrWhiteSpace().Should().BeFalse();
84+
}
85+
86+
[Fact]
87+
public static void MixedMemory()
88+
{
89+
var memory = new Memory<char>(" a\t".ToCharArray());
90+
memory.IsEmptyOrWhiteSpace().Should().BeFalse();
91+
}
92+
93+
[Fact]
94+
public static void EmptyReadOnlyMemory()
95+
{
96+
var readOnlyMemory = new ReadOnlyMemory<char>([]);
97+
readOnlyMemory.IsEmptyOrWhiteSpace().Should().BeTrue();
98+
}
99+
100+
[Fact]
101+
public static void WhiteSpaceReadOnlyMemory()
102+
{
103+
var readOnlyMemory = new ReadOnlyMemory<char>(" \t\n".ToCharArray());
104+
readOnlyMemory.IsEmptyOrWhiteSpace().Should().BeTrue();
105+
}
106+
107+
[Fact]
108+
public static void NonWhiteSpaceReadOnlyMemory()
109+
{
110+
var readOnlyMemory = new ReadOnlyMemory<char>("abc".ToCharArray());
111+
readOnlyMemory.IsEmptyOrWhiteSpace().Should().BeFalse();
112+
}
113+
114+
[Fact]
115+
public static void MixedReadOnlyMemory()
116+
{
117+
var readOnlyMemory = new ReadOnlyMemory<char>(" a\t".ToCharArray());
118+
readOnlyMemory.IsEmptyOrWhiteSpace().Should().BeFalse();
119+
}
64120
}

Code/Light.GuardClauses/Check.IsEmptyOrWhiteSpace.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,18 @@ public static bool IsEmptyOrWhiteSpace(this ReadOnlySpan<char> span)
3434

3535
return true;
3636
}
37+
38+
/// <summary>
39+
/// Checks if the specified memory is empty or contains only white space characters.
40+
/// </summary>
41+
/// <param name="memory">The memory to be checked.</param>
42+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43+
public static bool IsEmptyOrWhiteSpace(this Memory<char> memory) => memory.Span.IsEmptyOrWhiteSpace();
44+
45+
/// <summary>
46+
/// Checks if the specified memory is empty or contains only white space characters.
47+
/// </summary>
48+
/// <param name="memory">The memory to be checked.</param>
49+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
50+
public static bool IsEmptyOrWhiteSpace(this ReadOnlyMemory<char> memory) => memory.Span.IsEmptyOrWhiteSpace();
3751
}

0 commit comments

Comments
 (0)