diff --git a/Source/aweXpect.Core/Core/IStringMatchType.cs b/Source/aweXpect.Core/Core/IStringMatchType.cs index 7ece644d9..d17d0ba06 100644 --- a/Source/aweXpect.Core/Core/IStringMatchType.cs +++ b/Source/aweXpect.Core/Core/IStringMatchType.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; namespace aweXpect.Core; @@ -11,7 +12,12 @@ public interface IStringMatchType /// Returns if the two strings and are /// considered equal; otherwise . /// - bool AreConsideredEqual(string? actual, string? expected, +#if NET8_0_OR_GREATER + ValueTask +#else + Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer); diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.ExactMatchType.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.ExactMatchType.cs index a6ddd8aa0..097b437b5 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.ExactMatchType.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.ExactMatchType.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using aweXpect.Core; using aweXpect.Core.Helpers; @@ -96,20 +97,37 @@ public string GetExtendedFailure(string it, string? actual, string? expected, } /// - public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, +#if NET8_0_OR_GREATER + public ValueTask +#else + public Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer) { if (actual is null && expected is null) { - return true; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(true); +#else + return Task.FromResult(true); +#endif } if (actual is null || expected is null) { - return false; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(false); +#else + return Task.FromResult(false); +#endif } - return comparer.Equals(actual, expected); +#if NET8_0_OR_GREATER + return ValueTask.FromResult(comparer.Equals(actual, expected)); +#else + return Task.FromResult(comparer.Equals(actual, expected)); +#endif } /// diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.PrefixMatchType.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.PrefixMatchType.cs index b2e8dcc24..d8fc5d331 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.PrefixMatchType.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.PrefixMatchType.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using aweXpect.Core; using aweXpect.Core.Helpers; @@ -83,20 +84,37 @@ public string GetExtendedFailure(string it, string? actual, string? expected, } /// - public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, +#if NET8_0_OR_GREATER + public ValueTask +#else + public Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer) { if (actual is null && expected is null) { - return true; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(true); +#else + return Task.FromResult(true); +#endif } if (actual is null || expected is null) { - return false; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(false); +#else + return Task.FromResult(false); +#endif } - return actual.Length >= expected.Length && comparer.Equals(actual[..expected.Length], expected); +#if NET8_0_OR_GREATER + return ValueTask.FromResult(actual.Length >= expected.Length && comparer.Equals(actual[..expected.Length], expected)); +#else + return Task.FromResult(actual.Length >= expected.Length && comparer.Equals(actual[..expected.Length], expected)); +#endif } /// diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.RegexMatchType.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.RegexMatchType.cs index f77ed5f91..9aefa41f6 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.RegexMatchType.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.RegexMatchType.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Text.RegularExpressions; +using System.Threading.Tasks; using aweXpect.Core; using aweXpect.Core.Helpers; @@ -40,12 +41,21 @@ public string GetExtendedFailure(string it, string? actual, string? expected, } /// - public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, +#if NET8_0_OR_GREATER + public ValueTask +#else + public Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer) { if (actual is null || expected is null) { - return false; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(false); +#else + return Task.FromResult(false); +#endif } RegexOptions options = RegexOptions.Multiline; @@ -54,7 +64,11 @@ public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase options |= RegexOptions.IgnoreCase; } - return Regex.IsMatch(actual, expected, options, RegexTimeout); +#if NET8_0_OR_GREATER + return ValueTask.FromResult(Regex.IsMatch(actual, expected, options, RegexTimeout)); +#else + return Task.FromResult(Regex.IsMatch(actual, expected, options, RegexTimeout)); +#endif } /// diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.SuffixMatchType.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.SuffixMatchType.cs index 289080e5b..79152bb4f 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.SuffixMatchType.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.SuffixMatchType.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using aweXpect.Core; using aweXpect.Core.Helpers; @@ -90,20 +91,37 @@ public string GetExtendedFailure(string it, string? actual, string? expected, } /// - public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, +#if NET8_0_OR_GREATER + public ValueTask +#else + public Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer) { if (actual is null && expected is null) { - return true; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(true); +#else + return Task.FromResult(true); +#endif } if (actual is null || expected is null) { - return false; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(false); +#else + return Task.FromResult(false); +#endif } - return actual.Length >= expected.Length && comparer.Equals(actual[^expected.Length..], expected); +#if NET8_0_OR_GREATER + return ValueTask.FromResult(actual.Length >= expected.Length && comparer.Equals(actual[^expected.Length..], expected)); +#else + return Task.FromResult(actual.Length >= expected.Length && comparer.Equals(actual[^expected.Length..], expected)); +#endif } /// diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.WildcardMatchType.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.WildcardMatchType.cs index 237e646e5..3240338ea 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.WildcardMatchType.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.WildcardMatchType.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Text.RegularExpressions; +using System.Threading.Tasks; using aweXpect.Core; using aweXpect.Core.Helpers; @@ -49,20 +50,34 @@ public string GetExtendedFailure(string it, string? actual, string? expected, } /// - public bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, +#if NET8_0_OR_GREATER + public ValueTask +#else + public Task +#endif + AreConsideredEqual(string? actual, string? expected, bool ignoreCase, IEqualityComparer comparer) { if (actual is null || expected is null) { - return false; +#if NET8_0_OR_GREATER + return ValueTask.FromResult(false); +#else + return Task.FromResult(false); +#endif } RegexOptions options = ignoreCase ? RegexOptions.Multiline | RegexOptions.IgnoreCase : RegexOptions.Multiline; - return Regex.IsMatch(actual, WildcardToRegularExpression(expected), options, - RegexTimeout); +#if NET8_0_OR_GREATER + return ValueTask.FromResult(Regex.IsMatch(actual, WildcardToRegularExpression(expected), options, + RegexTimeout)); +#else + return Task.FromResult(Regex.IsMatch(actual, WildcardToRegularExpression(expected), options, + RegexTimeout)); +#endif } /// diff --git a/Source/aweXpect.Core/Options/StringEqualityOptions.cs b/Source/aweXpect.Core/Options/StringEqualityOptions.cs index c322ee66f..dcfdd3afe 100644 --- a/Source/aweXpect.Core/Options/StringEqualityOptions.cs +++ b/Source/aweXpect.Core/Options/StringEqualityOptions.cs @@ -24,21 +24,17 @@ public partial class StringEqualityOptions : IOptionsEquality /// #if NET8_0_OR_GREATER - public ValueTask AreConsideredEqual(string? actual, TExpected expected) + public async ValueTask AreConsideredEqual(string? actual, TExpected expected) #else - public Task AreConsideredEqual(string? actual, TExpected expected) + public async Task AreConsideredEqual(string? actual, TExpected expected) #endif { bool result; if (expected is not string expectedString) { - result = _matchType.AreConsideredEqual(actual, null, _ignoreCase, + result = await _matchType.AreConsideredEqual(actual, null, _ignoreCase, _comparer ?? UseDefaultComparer(_ignoreCase)); -#if NET8_0_OR_GREATER - return ValueTask.FromResult(result); -#else - return Task.FromResult(result); -#endif + return result; } if (_ignoreNewlineStyle) @@ -59,13 +55,9 @@ public Task AreConsideredEqual(string? actual, TExpected expect expectedString = expectedString.TrimEnd(); } - result = _matchType.AreConsideredEqual(actual, expectedString, _ignoreCase, + result = await _matchType.AreConsideredEqual(actual, expectedString, _ignoreCase, _comparer ?? UseDefaultComparer(_ignoreCase)); -#if NET8_0_OR_GREATER - return ValueTask.FromResult(result); -#else - return Task.FromResult(result); -#endif + return result; } /// diff --git a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt index 600fa446c..51da5f14f 100644 --- a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt +++ b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt @@ -220,7 +220,7 @@ namespace aweXpect.Core } public interface IStringMatchType { - bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer); + System.Threading.Tasks.ValueTask AreConsideredEqual(string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer); string GetExpectation(string? expected, aweXpect.Core.ExpectationGrammars grammars); string GetExtendedFailure(string it, string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer, aweXpect.Core.StringDifferenceSettings? settings); string GetOptionString(bool ignoreCase, System.Collections.Generic.IEqualityComparer? comparer); diff --git a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt index 681be7c62..699befa72 100644 --- a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt +++ b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt @@ -220,7 +220,7 @@ namespace aweXpect.Core } public interface IStringMatchType { - bool AreConsideredEqual(string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer); + System.Threading.Tasks.Task AreConsideredEqual(string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer); string GetExpectation(string? expected, aweXpect.Core.ExpectationGrammars grammars); string GetExtendedFailure(string it, string? actual, string? expected, bool ignoreCase, System.Collections.Generic.IEqualityComparer comparer, aweXpect.Core.StringDifferenceSettings? settings); string GetOptionString(bool ignoreCase, System.Collections.Generic.IEqualityComparer? comparer);