Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Code/Light.GuardClauses.Tests/ExecuteReadOnlySpanAssertion.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#nullable enable
using System;

namespace Light.GuardClauses.Tests;

public delegate void ExecuteReadOnlySpanAssertion<T>(
ReadOnlySpan<T> span,
ReadOnlySpanExceptionFactory<T> exceptionFactory
);

public delegate void ExecuteSpanAssertion<T>(
Span<T> span,
ReadOnlySpanExceptionFactory<T> exceptionFactory
);

public delegate void ExecuteReadOnlySpanAssertion<TItem, TValue>(
ReadOnlySpan<TItem> span,
TValue additionalValue,
ReadOnlySpanExceptionFactory<TItem, TValue> exceptionFactory
);

public delegate void ExecuteSpanAssertion<TItem, TValue>(
Span<TItem> span,
TValue additionalValue,
ReadOnlySpanExceptionFactory<TItem, TValue> exceptionFactory
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Xunit;

namespace Light.GuardClauses.Tests.StringAssertions;

public class InvalidEmailAddresses : TheoryData<string>
{
public InvalidEmailAddresses()
{
Add("plainaddress");
Add("#@%^%#$@#$@#.com");
Add("@domain.com");
Add("Joe Smith <email@domain.com>");
Add("email.domain.com");
Add("email@domain@domain.com");
Add(".email@domain.com");
Add("email.@domain.com");
Add("email..email@domain.com");
Add("email@domain.com (Joe Smith)");
Add("email@domain");
Add("email@-domain.com");
Add("email@111.222.333.44444");
Add("email@domain..com");
Add("email@256.256.256.256");
}
}

public sealed class InvalidEmailAddressesWithNull : InvalidEmailAddresses
{
public InvalidEmailAddressesWithNull()
{
Add(null);
}
}

This file was deleted.

108 changes: 108 additions & 0 deletions Code/Light.GuardClauses.Tests/StringAssertions/IsEmailAddressTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
using System;
using FluentAssertions;
using Xunit;

namespace Light.GuardClauses.Tests.StringAssertions;

public sealed class IsEmailAddressTests
{
[Theory]
[ClassData(typeof(InvalidEmailAddressesWithNull))]
public void IsNotValidEmailAddress(string email)
{
var isValid = email.IsEmailAddress();

isValid.Should().BeFalse();
}

[Theory]
[ClassData(typeof(ValidEmailAddresses))]
public void IsValidEmailAddress(string email)
{
var isValid = email.IsEmailAddress();

isValid.Should().BeTrue();
}

#if NET8_0
[Theory]
[ClassData(typeof(InvalidEmailAddressesWithNull))]
public void IsNotValidEmailAddress_ReadOnlySpan(string email)
{
var span = new ReadOnlySpan<char>(email?.ToCharArray() ?? []);
var isValid = span.IsEmailAddress();

isValid.Should().BeFalse();
}

[Theory]
[ClassData(typeof(ValidEmailAddresses))]
public void IsValidEmailAddress_ReadOnlySpan(string email)
{
var span = email.AsSpan();
var isValid = span.IsEmailAddress();

isValid.Should().BeTrue();
}

[Theory]
[ClassData(typeof(InvalidEmailAddressesWithNull))]
public void IsNotValidEmailAddress_Span(string email)
{
var span = new Span<char>(email?.ToCharArray() ?? []);
var isValid = span.IsEmailAddress();

isValid.Should().BeFalse();
}

[Theory]
[ClassData(typeof(ValidEmailAddresses))]
public void IsValidEmailAddress_Span(string email)
{
var span = new Span<char>(email.ToCharArray());
var isValid = span.IsEmailAddress();

isValid.Should().BeTrue();
}

[Theory]
[ClassData(typeof(InvalidEmailAddressesWithNull))]
public void IsNotValidEmailAddress_Memory(string email)
{
var memory = email?.ToCharArray().AsMemory() ?? Memory<char>.Empty;
var isValid = memory.IsEmailAddress();

isValid.Should().BeFalse();
}

[Theory]
[ClassData(typeof(ValidEmailAddresses))]
public void IsValidEmailAddress_Memory(string email)
{
var memory = email.ToCharArray().AsMemory();
var isValid = memory.IsEmailAddress();

isValid.Should().BeTrue();
}

[Theory]
[ClassData(typeof(InvalidEmailAddressesWithNull))]
public void IsNotValidEmailAddress_ReadOnlyMemory(string email)
{
var memory = new ReadOnlyMemory<char>(email?.ToCharArray() ?? []);
var isValid = memory.IsEmailAddress();

isValid.Should().BeFalse();
}

[Theory]
[ClassData(typeof(ValidEmailAddresses))]
public void IsValidEmailAddress_ReadOnlyMemory(string email)
{
var memory = new ReadOnlyMemory<char>(email.ToCharArray());
var isValid = memory.IsEmailAddress();

isValid.Should().BeTrue();
}
#endif
}
Loading