Skip to content

Commit 6d05edb

Browse files
authored
Merge pull request #109 from feO2x/features/email-regex-update
Updates to IsEmailAddress and MustBeEmailAddress
2 parents b12570c + 83c1cd9 commit 6d05edb

File tree

11 files changed

+1215
-84
lines changed

11 files changed

+1215
-84
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#nullable enable
2+
using System;
3+
4+
namespace Light.GuardClauses.Tests;
5+
6+
public delegate void ExecuteReadOnlySpanAssertion<T>(
7+
ReadOnlySpan<T> span,
8+
ReadOnlySpanExceptionFactory<T> exceptionFactory
9+
);
10+
11+
public delegate void ExecuteSpanAssertion<T>(
12+
Span<T> span,
13+
ReadOnlySpanExceptionFactory<T> exceptionFactory
14+
);
15+
16+
public delegate void ExecuteReadOnlySpanAssertion<TItem, TValue>(
17+
ReadOnlySpan<TItem> span,
18+
TValue additionalValue,
19+
ReadOnlySpanExceptionFactory<TItem, TValue> exceptionFactory
20+
);
21+
22+
public delegate void ExecuteSpanAssertion<TItem, TValue>(
23+
Span<TItem> span,
24+
TValue additionalValue,
25+
ReadOnlySpanExceptionFactory<TItem, TValue> exceptionFactory
26+
);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Xunit;
2+
3+
namespace Light.GuardClauses.Tests.StringAssertions;
4+
5+
public class InvalidEmailAddresses : TheoryData<string>
6+
{
7+
public InvalidEmailAddresses()
8+
{
9+
Add("plainaddress");
10+
Add("#@%^%#$@#$@#.com");
11+
Add("@domain.com");
12+
Add("Joe Smith <email@domain.com>");
13+
Add("email.domain.com");
14+
Add("email@domain@domain.com");
15+
Add(".email@domain.com");
16+
Add("email.@domain.com");
17+
Add("email..email@domain.com");
18+
Add("email@domain.com (Joe Smith)");
19+
Add("email@domain");
20+
Add("email@-domain.com");
21+
Add("email@111.222.333.44444");
22+
Add("email@domain..com");
23+
Add("email@256.256.256.256");
24+
}
25+
}
26+
27+
public sealed class InvalidEmailAddressesWithNull : InvalidEmailAddresses
28+
{
29+
public InvalidEmailAddressesWithNull()
30+
{
31+
Add(null);
32+
}
33+
}

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

Lines changed: 0 additions & 50 deletions
This file was deleted.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
using System;
2+
using FluentAssertions;
3+
using Xunit;
4+
5+
namespace Light.GuardClauses.Tests.StringAssertions;
6+
7+
public sealed class IsEmailAddressTests
8+
{
9+
[Theory]
10+
[ClassData(typeof(InvalidEmailAddressesWithNull))]
11+
public void IsNotValidEmailAddress(string email)
12+
{
13+
var isValid = email.IsEmailAddress();
14+
15+
isValid.Should().BeFalse();
16+
}
17+
18+
[Theory]
19+
[ClassData(typeof(ValidEmailAddresses))]
20+
public void IsValidEmailAddress(string email)
21+
{
22+
var isValid = email.IsEmailAddress();
23+
24+
isValid.Should().BeTrue();
25+
}
26+
27+
#if NET8_0
28+
[Theory]
29+
[ClassData(typeof(InvalidEmailAddressesWithNull))]
30+
public void IsNotValidEmailAddress_ReadOnlySpan(string email)
31+
{
32+
var span = new ReadOnlySpan<char>(email?.ToCharArray() ?? []);
33+
var isValid = span.IsEmailAddress();
34+
35+
isValid.Should().BeFalse();
36+
}
37+
38+
[Theory]
39+
[ClassData(typeof(ValidEmailAddresses))]
40+
public void IsValidEmailAddress_ReadOnlySpan(string email)
41+
{
42+
var span = email.AsSpan();
43+
var isValid = span.IsEmailAddress();
44+
45+
isValid.Should().BeTrue();
46+
}
47+
48+
[Theory]
49+
[ClassData(typeof(InvalidEmailAddressesWithNull))]
50+
public void IsNotValidEmailAddress_Span(string email)
51+
{
52+
var span = new Span<char>(email?.ToCharArray() ?? []);
53+
var isValid = span.IsEmailAddress();
54+
55+
isValid.Should().BeFalse();
56+
}
57+
58+
[Theory]
59+
[ClassData(typeof(ValidEmailAddresses))]
60+
public void IsValidEmailAddress_Span(string email)
61+
{
62+
var span = new Span<char>(email.ToCharArray());
63+
var isValid = span.IsEmailAddress();
64+
65+
isValid.Should().BeTrue();
66+
}
67+
68+
[Theory]
69+
[ClassData(typeof(InvalidEmailAddressesWithNull))]
70+
public void IsNotValidEmailAddress_Memory(string email)
71+
{
72+
var memory = email?.ToCharArray().AsMemory() ?? Memory<char>.Empty;
73+
var isValid = memory.IsEmailAddress();
74+
75+
isValid.Should().BeFalse();
76+
}
77+
78+
[Theory]
79+
[ClassData(typeof(ValidEmailAddresses))]
80+
public void IsValidEmailAddress_Memory(string email)
81+
{
82+
var memory = email.ToCharArray().AsMemory();
83+
var isValid = memory.IsEmailAddress();
84+
85+
isValid.Should().BeTrue();
86+
}
87+
88+
[Theory]
89+
[ClassData(typeof(InvalidEmailAddressesWithNull))]
90+
public void IsNotValidEmailAddress_ReadOnlyMemory(string email)
91+
{
92+
var memory = new ReadOnlyMemory<char>(email?.ToCharArray() ?? []);
93+
var isValid = memory.IsEmailAddress();
94+
95+
isValid.Should().BeFalse();
96+
}
97+
98+
[Theory]
99+
[ClassData(typeof(ValidEmailAddresses))]
100+
public void IsValidEmailAddress_ReadOnlyMemory(string email)
101+
{
102+
var memory = new ReadOnlyMemory<char>(email.ToCharArray());
103+
var isValid = memory.IsEmailAddress();
104+
105+
isValid.Should().BeTrue();
106+
}
107+
#endif
108+
}

0 commit comments

Comments
 (0)