diff --git a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet10_0.verified.txt index 5b846b3534..a7270040b7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet10_0.verified.txt @@ -13,9 +13,11 @@ namespace TUnit.Assertions.Extensions; /// Generated assertion for IsEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsEmpty_Assertion : Assertion +public sealed class TArray_IsEmpty_Assertion : Assertion { - public _IsEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsEmpty_Assertion(AssertionContext context) : base(context) { } @@ -36,9 +38,9 @@ public sealed class _IsEmpty_Assertion : Assertion } var result = value!.Length == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,9 +53,11 @@ public sealed class _IsEmpty_Assertion : Assertion /// Generated assertion for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotEmpty_Assertion : Assertion +public sealed class TArray_IsNotEmpty_Assertion : Assertion { - public _IsNotEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotEmpty_Assertion(AssertionContext context) : base(context) { } @@ -74,9 +78,9 @@ public sealed class _IsNotEmpty_Assertion : Assertion } var result = value != null && value!.Length > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -89,9 +93,11 @@ public sealed class _IsNotEmpty_Assertion : Assertion /// Generated assertion for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsSingleElement_Assertion : Assertion +public sealed class TArray_IsSingleElement_Assertion : Assertion { - public _IsSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -112,9 +118,9 @@ public sealed class _IsSingleElement_Assertion : Assertion } var result = value!.Length == 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -127,9 +133,11 @@ public sealed class _IsSingleElement_Assertion : Assertion /// Generated assertion for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotSingleElement_Assertion : Assertion +public sealed class TArray_IsNotSingleElement_Assertion : Assertion { - public _IsNotSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -150,9 +158,9 @@ public sealed class _IsNotSingleElement_Assertion : Assertion } var result = value!.Length != 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -167,6 +175,8 @@ public sealed class _IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -188,9 +198,9 @@ public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsNotSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -226,9 +238,9 @@ public sealed class IEnumerableT_IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsEmpty_Assertion IsEmpty(this IAssertionSource source) + public static TArray_IsEmpty_Assertion IsEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsEmpty()"); - return new _IsEmpty_Assertion(source.Context); + return new TArray_IsEmpty_Assertion(source.Context); } /// /// Generated extension method for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) + public static TArray_IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotEmpty()"); - return new _IsNotEmpty_Assertion(source.Context); + return new TArray_IsNotEmpty_Assertion(source.Context); } /// /// Generated extension method for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) + public static TArray_IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsSingleElement()"); - return new _IsSingleElement_Assertion(source.Context); + return new TArray_IsSingleElement_Assertion(source.Context); } /// /// Generated extension method for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) + public static TArray_IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotSingleElement()"); - return new _IsNotSingleElement_Assertion(source.Context); + return new TArray_IsNotSingleElement_Assertion(source.Context); } /// diff --git a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet8_0.verified.txt index 5b846b3534..a7270040b7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet8_0.verified.txt @@ -13,9 +13,11 @@ namespace TUnit.Assertions.Extensions; /// Generated assertion for IsEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsEmpty_Assertion : Assertion +public sealed class TArray_IsEmpty_Assertion : Assertion { - public _IsEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsEmpty_Assertion(AssertionContext context) : base(context) { } @@ -36,9 +38,9 @@ public sealed class _IsEmpty_Assertion : Assertion } var result = value!.Length == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,9 +53,11 @@ public sealed class _IsEmpty_Assertion : Assertion /// Generated assertion for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotEmpty_Assertion : Assertion +public sealed class TArray_IsNotEmpty_Assertion : Assertion { - public _IsNotEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotEmpty_Assertion(AssertionContext context) : base(context) { } @@ -74,9 +78,9 @@ public sealed class _IsNotEmpty_Assertion : Assertion } var result = value != null && value!.Length > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -89,9 +93,11 @@ public sealed class _IsNotEmpty_Assertion : Assertion /// Generated assertion for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsSingleElement_Assertion : Assertion +public sealed class TArray_IsSingleElement_Assertion : Assertion { - public _IsSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -112,9 +118,9 @@ public sealed class _IsSingleElement_Assertion : Assertion } var result = value!.Length == 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -127,9 +133,11 @@ public sealed class _IsSingleElement_Assertion : Assertion /// Generated assertion for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotSingleElement_Assertion : Assertion +public sealed class TArray_IsNotSingleElement_Assertion : Assertion { - public _IsNotSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -150,9 +158,9 @@ public sealed class _IsNotSingleElement_Assertion : Assertion } var result = value!.Length != 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -167,6 +175,8 @@ public sealed class _IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -188,9 +198,9 @@ public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsNotSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -226,9 +238,9 @@ public sealed class IEnumerableT_IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsEmpty_Assertion IsEmpty(this IAssertionSource source) + public static TArray_IsEmpty_Assertion IsEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsEmpty()"); - return new _IsEmpty_Assertion(source.Context); + return new TArray_IsEmpty_Assertion(source.Context); } /// /// Generated extension method for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) + public static TArray_IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotEmpty()"); - return new _IsNotEmpty_Assertion(source.Context); + return new TArray_IsNotEmpty_Assertion(source.Context); } /// /// Generated extension method for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) + public static TArray_IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsSingleElement()"); - return new _IsSingleElement_Assertion(source.Context); + return new TArray_IsSingleElement_Assertion(source.Context); } /// /// Generated extension method for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) + public static TArray_IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotSingleElement()"); - return new _IsNotSingleElement_Assertion(source.Context); + return new TArray_IsNotSingleElement_Assertion(source.Context); } /// diff --git a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet9_0.verified.txt index 5b846b3534..a7270040b7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.DotNet9_0.verified.txt @@ -13,9 +13,11 @@ namespace TUnit.Assertions.Extensions; /// Generated assertion for IsEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsEmpty_Assertion : Assertion +public sealed class TArray_IsEmpty_Assertion : Assertion { - public _IsEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsEmpty_Assertion(AssertionContext context) : base(context) { } @@ -36,9 +38,9 @@ public sealed class _IsEmpty_Assertion : Assertion } var result = value!.Length == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,9 +53,11 @@ public sealed class _IsEmpty_Assertion : Assertion /// Generated assertion for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotEmpty_Assertion : Assertion +public sealed class TArray_IsNotEmpty_Assertion : Assertion { - public _IsNotEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotEmpty_Assertion(AssertionContext context) : base(context) { } @@ -74,9 +78,9 @@ public sealed class _IsNotEmpty_Assertion : Assertion } var result = value != null && value!.Length > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -89,9 +93,11 @@ public sealed class _IsNotEmpty_Assertion : Assertion /// Generated assertion for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsSingleElement_Assertion : Assertion +public sealed class TArray_IsSingleElement_Assertion : Assertion { - public _IsSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -112,9 +118,9 @@ public sealed class _IsSingleElement_Assertion : Assertion } var result = value!.Length == 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -127,9 +133,11 @@ public sealed class _IsSingleElement_Assertion : Assertion /// Generated assertion for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotSingleElement_Assertion : Assertion +public sealed class TArray_IsNotSingleElement_Assertion : Assertion { - public _IsNotSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -150,9 +158,9 @@ public sealed class _IsNotSingleElement_Assertion : Assertion } var result = value!.Length != 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -167,6 +175,8 @@ public sealed class _IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -188,9 +198,9 @@ public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsNotSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -226,9 +238,9 @@ public sealed class IEnumerableT_IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsEmpty_Assertion IsEmpty(this IAssertionSource source) + public static TArray_IsEmpty_Assertion IsEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsEmpty()"); - return new _IsEmpty_Assertion(source.Context); + return new TArray_IsEmpty_Assertion(source.Context); } /// /// Generated extension method for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) + public static TArray_IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotEmpty()"); - return new _IsNotEmpty_Assertion(source.Context); + return new TArray_IsNotEmpty_Assertion(source.Context); } /// /// Generated extension method for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) + public static TArray_IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsSingleElement()"); - return new _IsSingleElement_Assertion(source.Context); + return new TArray_IsSingleElement_Assertion(source.Context); } /// /// Generated extension method for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) + public static TArray_IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotSingleElement()"); - return new _IsNotSingleElement_Assertion(source.Context); + return new TArray_IsNotSingleElement_Assertion(source.Context); } /// diff --git a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.Net4_7.verified.txt index 5b846b3534..a7270040b7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/ArrayAssertionGeneratorTests.GeneratesArrayAssertions.Net4_7.verified.txt @@ -13,9 +13,11 @@ namespace TUnit.Assertions.Extensions; /// Generated assertion for IsEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsEmpty_Assertion : Assertion +public sealed class TArray_IsEmpty_Assertion : Assertion { - public _IsEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsEmpty_Assertion(AssertionContext context) : base(context) { } @@ -36,9 +38,9 @@ public sealed class _IsEmpty_Assertion : Assertion } var result = value!.Length == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,9 +53,11 @@ public sealed class _IsEmpty_Assertion : Assertion /// Generated assertion for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotEmpty_Assertion : Assertion +public sealed class TArray_IsNotEmpty_Assertion : Assertion { - public _IsNotEmpty_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotEmpty_Assertion(AssertionContext context) : base(context) { } @@ -74,9 +78,9 @@ public sealed class _IsNotEmpty_Assertion : Assertion } var result = value != null && value!.Length > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -89,9 +93,11 @@ public sealed class _IsNotEmpty_Assertion : Assertion /// Generated assertion for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsSingleElement_Assertion : Assertion +public sealed class TArray_IsSingleElement_Assertion : Assertion { - public _IsSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -112,9 +118,9 @@ public sealed class _IsSingleElement_Assertion : Assertion } var result = value!.Length == 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -127,9 +133,11 @@ public sealed class _IsSingleElement_Assertion : Assertion /// Generated assertion for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] -public sealed class _IsNotSingleElement_Assertion : Assertion +public sealed class TArray_IsNotSingleElement_Assertion : Assertion { - public _IsNotSingleElement_Assertion(AssertionContext context) + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + public TArray_IsNotSingleElement_Assertion(AssertionContext context) : base(context) { } @@ -150,9 +158,9 @@ public sealed class _IsNotSingleElement_Assertion : Assertion } var result = value!.Length != 1; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -167,6 +175,8 @@ public sealed class _IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -188,9 +198,9 @@ public sealed class IEnumerableT_IsSingleElement_Assertion : Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public IEnumerableT_IsNotSingleElement_Assertion(AssertionContext> context) : base(context) { @@ -226,9 +238,9 @@ public sealed class IEnumerableT_IsNotSingleElement_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsEmpty_Assertion IsEmpty(this IAssertionSource source) + public static TArray_IsEmpty_Assertion IsEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsEmpty()"); - return new _IsEmpty_Assertion(source.Context); + return new TArray_IsEmpty_Assertion(source.Context); } /// /// Generated extension method for IsNotEmpty /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) + public static TArray_IsNotEmpty_Assertion IsNotEmpty(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotEmpty()"); - return new _IsNotEmpty_Assertion(source.Context); + return new TArray_IsNotEmpty_Assertion(source.Context); } /// /// Generated extension method for IsSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) + public static TArray_IsSingleElement_Assertion IsSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsSingleElement()"); - return new _IsSingleElement_Assertion(source.Context); + return new TArray_IsSingleElement_Assertion(source.Context); } /// /// Generated extension method for IsNotSingleElement /// [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] - public static _IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) + public static TArray_IsNotSingleElement_Assertion IsNotSingleElement(this IAssertionSource source) { source.Context.ExpressionBuilder.Append(".IsNotSingleElement()"); - return new _IsNotSingleElement_Assertion(source.Context); + return new TArray_IsNotSingleElement_Assertion(source.Context); } /// diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet10_0.verified.txt index 67fe2526b6..1bc9aba825 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet10_0.verified.txt @@ -20,8 +20,27 @@ public static class DefaultValuesAssertionExtensions /// public static DefaultValuesAssertion HasDefaultValues(this IAssertionSource source, bool boolValue = true, int intValue = 0, string stringValue = "default", [CallerArgumentExpression(nameof(boolValue))] string? boolValueExpression = null, [CallerArgumentExpression(nameof(intValue))] string? intValueExpression = null, [CallerArgumentExpression(nameof(stringValue))] string? stringValueExpression = null) { - source.Context.ExpressionBuilder.Append(".HasDefaultValues(" - + string.Join(", ", new[] { boolValueExpression, intValueExpression, stringValueExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".HasDefaultValues("); + var added = false; + if (boolValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(boolValueExpression); + added = true; + } + if (intValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(intValueExpression); + added = true; + } + if (stringValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(stringValueExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new DefaultValuesAssertion(source.Context, boolValue, intValue, stringValue); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet8_0.verified.txt index 67fe2526b6..1bc9aba825 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet8_0.verified.txt @@ -20,8 +20,27 @@ public static class DefaultValuesAssertionExtensions /// public static DefaultValuesAssertion HasDefaultValues(this IAssertionSource source, bool boolValue = true, int intValue = 0, string stringValue = "default", [CallerArgumentExpression(nameof(boolValue))] string? boolValueExpression = null, [CallerArgumentExpression(nameof(intValue))] string? intValueExpression = null, [CallerArgumentExpression(nameof(stringValue))] string? stringValueExpression = null) { - source.Context.ExpressionBuilder.Append(".HasDefaultValues(" - + string.Join(", ", new[] { boolValueExpression, intValueExpression, stringValueExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".HasDefaultValues("); + var added = false; + if (boolValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(boolValueExpression); + added = true; + } + if (intValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(intValueExpression); + added = true; + } + if (stringValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(stringValueExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new DefaultValuesAssertion(source.Context, boolValue, intValue, stringValue); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet9_0.verified.txt index 67fe2526b6..1bc9aba825 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.DotNet9_0.verified.txt @@ -20,8 +20,27 @@ public static class DefaultValuesAssertionExtensions /// public static DefaultValuesAssertion HasDefaultValues(this IAssertionSource source, bool boolValue = true, int intValue = 0, string stringValue = "default", [CallerArgumentExpression(nameof(boolValue))] string? boolValueExpression = null, [CallerArgumentExpression(nameof(intValue))] string? intValueExpression = null, [CallerArgumentExpression(nameof(stringValue))] string? stringValueExpression = null) { - source.Context.ExpressionBuilder.Append(".HasDefaultValues(" - + string.Join(", ", new[] { boolValueExpression, intValueExpression, stringValueExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".HasDefaultValues("); + var added = false; + if (boolValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(boolValueExpression); + added = true; + } + if (intValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(intValueExpression); + added = true; + } + if (stringValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(stringValueExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new DefaultValuesAssertion(source.Context, boolValue, intValue, stringValue); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.Net4_7.verified.txt index 67fe2526b6..1bc9aba825 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithDefaultValues.Net4_7.verified.txt @@ -20,8 +20,27 @@ public static class DefaultValuesAssertionExtensions /// public static DefaultValuesAssertion HasDefaultValues(this IAssertionSource source, bool boolValue = true, int intValue = 0, string stringValue = "default", [CallerArgumentExpression(nameof(boolValue))] string? boolValueExpression = null, [CallerArgumentExpression(nameof(intValue))] string? intValueExpression = null, [CallerArgumentExpression(nameof(stringValue))] string? stringValueExpression = null) { - source.Context.ExpressionBuilder.Append(".HasDefaultValues(" - + string.Join(", ", new[] { boolValueExpression, intValueExpression, stringValueExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".HasDefaultValues("); + var added = false; + if (boolValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(boolValueExpression); + added = true; + } + if (intValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(intValueExpression); + added = true; + } + if (stringValueExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(stringValueExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new DefaultValuesAssertion(source.Context, boolValue, intValue, stringValue); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet10_0.verified.txt index 81fa22380f..d8a843708c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet10_0.verified.txt @@ -20,8 +20,21 @@ public static class StringComparisonAssertionExtensions /// public static StringComparisonAssertion IsEqualToWithComparison(this IAssertionSource source, string expected, System.StringComparison comparison = StringComparison.Ordinal, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparison))] string? comparisonExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison(" - + string.Join(", ", new[] { expectedExpression, comparisonExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparisonExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparisonExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new StringComparisonAssertion(source.Context, expected, comparison); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet8_0.verified.txt index 81fa22380f..d8a843708c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet8_0.verified.txt @@ -20,8 +20,21 @@ public static class StringComparisonAssertionExtensions /// public static StringComparisonAssertion IsEqualToWithComparison(this IAssertionSource source, string expected, System.StringComparison comparison = StringComparison.Ordinal, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparison))] string? comparisonExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison(" - + string.Join(", ", new[] { expectedExpression, comparisonExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparisonExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparisonExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new StringComparisonAssertion(source.Context, expected, comparison); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet9_0.verified.txt index 81fa22380f..d8a843708c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.DotNet9_0.verified.txt @@ -20,8 +20,21 @@ public static class StringComparisonAssertionExtensions /// public static StringComparisonAssertion IsEqualToWithComparison(this IAssertionSource source, string expected, System.StringComparison comparison = StringComparison.Ordinal, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparison))] string? comparisonExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison(" - + string.Join(", ", new[] { expectedExpression, comparisonExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparisonExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparisonExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new StringComparisonAssertion(source.Context, expected, comparison); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.Net4_7.verified.txt index 81fa22380f..d8a843708c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithEnumDefault.Net4_7.verified.txt @@ -20,8 +20,21 @@ public static class StringComparisonAssertionExtensions /// public static StringComparisonAssertion IsEqualToWithComparison(this IAssertionSource source, string expected, System.StringComparison comparison = StringComparison.Ordinal, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparison))] string? comparisonExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison(" - + string.Join(", ", new[] { expectedExpression, comparisonExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualToWithComparison("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparisonExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparisonExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new StringComparisonAssertion(source.Context, expected, comparison); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet10_0.verified.txt index a1ba8eb1f7..2497c7a9c3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet10_0.verified.txt @@ -21,8 +21,9 @@ public static class GreaterThanAssertionExtensions public static GreaterThanAssertion IsGreaterThan(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsGreaterThan(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsGreaterThan("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new GreaterThanAssertion(source.Context, expected); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet8_0.verified.txt index a1ba8eb1f7..2497c7a9c3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet8_0.verified.txt @@ -21,8 +21,9 @@ public static class GreaterThanAssertionExtensions public static GreaterThanAssertion IsGreaterThan(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsGreaterThan(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsGreaterThan("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new GreaterThanAssertion(source.Context, expected); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet9_0.verified.txt index a1ba8eb1f7..2497c7a9c3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.DotNet9_0.verified.txt @@ -21,8 +21,9 @@ public static class GreaterThanAssertionExtensions public static GreaterThanAssertion IsGreaterThan(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsGreaterThan(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsGreaterThan("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new GreaterThanAssertion(source.Context, expected); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.Net4_7.verified.txt index a1ba8eb1f7..2497c7a9c3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithGenericConstraints.Net4_7.verified.txt @@ -21,8 +21,9 @@ public static class GreaterThanAssertionExtensions public static GreaterThanAssertion IsGreaterThan(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsGreaterThan(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsGreaterThan("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new GreaterThanAssertion(source.Context, expected); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet10_0.verified.txt index f545812480..d603f4ef32 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet10_0.verified.txt @@ -20,8 +20,9 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected); } @@ -30,8 +31,21 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, System.Collections.Generic.IEqualityComparer comparer, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet8_0.verified.txt index f545812480..d603f4ef32 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet8_0.verified.txt @@ -20,8 +20,9 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected); } @@ -30,8 +31,21 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, System.Collections.Generic.IEqualityComparer comparer, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet9_0.verified.txt index f545812480..d603f4ef32 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.DotNet9_0.verified.txt @@ -20,8 +20,9 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected); } @@ -30,8 +31,21 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, System.Collections.Generic.IEqualityComparer comparer, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.Net4_7.verified.txt index f545812480..d603f4ef32 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleConstructors.Net4_7.verified.txt @@ -20,8 +20,9 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + source.Context.ExpressionBuilder.Append(expectedExpression); + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected); } @@ -30,8 +31,21 @@ public static class EqualsAssertionExtensions /// public static EqualsAssertion IsEqualTo(this IAssertionSource source, TValue expected, System.Collections.Generic.IEqualityComparer comparer, [CallerArgumentExpression(nameof(expected))] string? expectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsEqualTo(" - + string.Join(", ", new[] { expectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsEqualTo("); + var added = false; + if (expectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(expectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new EqualsAssertion(source.Context, expected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet10_0.verified.txt index cf3c4fd8cf..894271df3d 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet10_0.verified.txt @@ -21,8 +21,21 @@ public static class BetweenAssertionExtensions public static BetweenAssertion IsBetween(this IAssertionSource source, TValue lowerBound, TValue upperBound, [CallerArgumentExpression(nameof(lowerBound))] string? lowerBoundExpression = null, [CallerArgumentExpression(nameof(upperBound))] string? upperBoundExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsBetween(" - + string.Join(", ", new[] { lowerBoundExpression, upperBoundExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsBetween("); + var added = false; + if (lowerBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(lowerBoundExpression); + added = true; + } + if (upperBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(upperBoundExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new BetweenAssertion(source.Context, lowerBound, upperBound); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet8_0.verified.txt index cf3c4fd8cf..894271df3d 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet8_0.verified.txt @@ -21,8 +21,21 @@ public static class BetweenAssertionExtensions public static BetweenAssertion IsBetween(this IAssertionSource source, TValue lowerBound, TValue upperBound, [CallerArgumentExpression(nameof(lowerBound))] string? lowerBoundExpression = null, [CallerArgumentExpression(nameof(upperBound))] string? upperBoundExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsBetween(" - + string.Join(", ", new[] { lowerBoundExpression, upperBoundExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsBetween("); + var added = false; + if (lowerBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(lowerBoundExpression); + added = true; + } + if (upperBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(upperBoundExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new BetweenAssertion(source.Context, lowerBound, upperBound); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet9_0.verified.txt index cf3c4fd8cf..894271df3d 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.DotNet9_0.verified.txt @@ -21,8 +21,21 @@ public static class BetweenAssertionExtensions public static BetweenAssertion IsBetween(this IAssertionSource source, TValue lowerBound, TValue upperBound, [CallerArgumentExpression(nameof(lowerBound))] string? lowerBoundExpression = null, [CallerArgumentExpression(nameof(upperBound))] string? upperBoundExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsBetween(" - + string.Join(", ", new[] { lowerBoundExpression, upperBoundExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsBetween("); + var added = false; + if (lowerBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(lowerBoundExpression); + added = true; + } + if (upperBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(upperBoundExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new BetweenAssertion(source.Context, lowerBound, upperBound); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.Net4_7.verified.txt index cf3c4fd8cf..894271df3d 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithMultipleParameters.Net4_7.verified.txt @@ -21,8 +21,21 @@ public static class BetweenAssertionExtensions public static BetweenAssertion IsBetween(this IAssertionSource source, TValue lowerBound, TValue upperBound, [CallerArgumentExpression(nameof(lowerBound))] string? lowerBoundExpression = null, [CallerArgumentExpression(nameof(upperBound))] string? upperBoundExpression = null) where TValue : System.IComparable { - source.Context.ExpressionBuilder.Append(".IsBetween(" - + string.Join(", ", new[] { lowerBoundExpression, upperBoundExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsBetween("); + var added = false; + if (lowerBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(lowerBoundExpression); + added = true; + } + if (upperBoundExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(upperBoundExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new BetweenAssertion(source.Context, lowerBound, upperBound); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet10_0.verified.txt index b2dc0a61f1..4d945048c0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet10_0.verified.txt @@ -20,7 +20,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsTrue(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsTrue(" + ")"); + source.Context.ExpressionBuilder.Append(".IsTrue("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } @@ -29,7 +29,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsFalse(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsFalse(" + ")"); + source.Context.ExpressionBuilder.Append(".IsFalse("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet8_0.verified.txt index b2dc0a61f1..4d945048c0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet8_0.verified.txt @@ -20,7 +20,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsTrue(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsTrue(" + ")"); + source.Context.ExpressionBuilder.Append(".IsTrue("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } @@ -29,7 +29,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsFalse(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsFalse(" + ")"); + source.Context.ExpressionBuilder.Append(".IsFalse("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet9_0.verified.txt index b2dc0a61f1..4d945048c0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.DotNet9_0.verified.txt @@ -20,7 +20,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsTrue(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsTrue(" + ")"); + source.Context.ExpressionBuilder.Append(".IsTrue("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } @@ -29,7 +29,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsFalse(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsFalse(" + ")"); + source.Context.ExpressionBuilder.Append(".IsFalse("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.Net4_7.verified.txt index b2dc0a61f1..4d945048c0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithNegatedMethod.Net4_7.verified.txt @@ -20,7 +20,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsTrue(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsTrue(" + ")"); + source.Context.ExpressionBuilder.Append(".IsTrue("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } @@ -29,7 +29,7 @@ public static class TrueAssertionExtensions /// public static TrueAssertion IsFalse(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsFalse(" + ")"); + source.Context.ExpressionBuilder.Append(".IsFalse("); source.Context.ExpressionBuilder.Append(")"); return new TrueAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet10_0.verified.txt index 9ccf7cf5b5..e177f25be6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet10_0.verified.txt @@ -20,8 +20,21 @@ public static class NotEqualsAssertionExtensions /// public static NotEqualsAssertion IsNotEqualTo(this IAssertionSource source, TValue notExpected, System.Collections.Generic.IEqualityComparer? comparer = null, [CallerArgumentExpression(nameof(notExpected))] string? notExpectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsNotEqualTo(" - + string.Join(", ", new[] { notExpectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsNotEqualTo("); + var added = false; + if (notExpectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(notExpectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new NotEqualsAssertion(source.Context, notExpected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet8_0.verified.txt index 9ccf7cf5b5..e177f25be6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet8_0.verified.txt @@ -20,8 +20,21 @@ public static class NotEqualsAssertionExtensions /// public static NotEqualsAssertion IsNotEqualTo(this IAssertionSource source, TValue notExpected, System.Collections.Generic.IEqualityComparer? comparer = null, [CallerArgumentExpression(nameof(notExpected))] string? notExpectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsNotEqualTo(" - + string.Join(", ", new[] { notExpectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsNotEqualTo("); + var added = false; + if (notExpectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(notExpectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new NotEqualsAssertion(source.Context, notExpected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet9_0.verified.txt index 9ccf7cf5b5..e177f25be6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.DotNet9_0.verified.txt @@ -20,8 +20,21 @@ public static class NotEqualsAssertionExtensions /// public static NotEqualsAssertion IsNotEqualTo(this IAssertionSource source, TValue notExpected, System.Collections.Generic.IEqualityComparer? comparer = null, [CallerArgumentExpression(nameof(notExpected))] string? notExpectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsNotEqualTo(" - + string.Join(", ", new[] { notExpectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsNotEqualTo("); + var added = false; + if (notExpectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(notExpectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new NotEqualsAssertion(source.Context, notExpected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.Net4_7.verified.txt index 9ccf7cf5b5..e177f25be6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.AssertionWithOptionalParameter.Net4_7.verified.txt @@ -20,8 +20,21 @@ public static class NotEqualsAssertionExtensions /// public static NotEqualsAssertion IsNotEqualTo(this IAssertionSource source, TValue notExpected, System.Collections.Generic.IEqualityComparer? comparer = null, [CallerArgumentExpression(nameof(notExpected))] string? notExpectedExpression = null, [CallerArgumentExpression(nameof(comparer))] string? comparerExpression = null) { - source.Context.ExpressionBuilder.Append(".IsNotEqualTo(" - + string.Join(", ", new[] { notExpectedExpression, comparerExpression }.Where(e => e != null)) + ")"); + source.Context.ExpressionBuilder.Append(".IsNotEqualTo("); + var added = false; + if (notExpectedExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(notExpectedExpression); + added = true; + } + if (comparerExpression != null) + { + source.Context.ExpressionBuilder.Append(added ? ", " : ""); + source.Context.ExpressionBuilder.Append(comparerExpression); + added = true; + } + source.Context.ExpressionBuilder.Append(")"); return new NotEqualsAssertion(source.Context, notExpected, comparer); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet10_0.verified.txt index 64576dd105..c44e2eeba7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet10_0.verified.txt @@ -20,7 +20,7 @@ public static class IsAssignableToAssertionExtensions /// public static IsAssignableToAssertion IsAssignableTo(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsAssignableTo(" + ")"); + source.Context.ExpressionBuilder.Append(".IsAssignableTo("); source.Context.ExpressionBuilder.Append(")"); return new IsAssignableToAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet8_0.verified.txt index 64576dd105..c44e2eeba7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet8_0.verified.txt @@ -20,7 +20,7 @@ public static class IsAssignableToAssertionExtensions /// public static IsAssignableToAssertion IsAssignableTo(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsAssignableTo(" + ")"); + source.Context.ExpressionBuilder.Append(".IsAssignableTo("); source.Context.ExpressionBuilder.Append(")"); return new IsAssignableToAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet9_0.verified.txt index 64576dd105..c44e2eeba7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.DotNet9_0.verified.txt @@ -20,7 +20,7 @@ public static class IsAssignableToAssertionExtensions /// public static IsAssignableToAssertion IsAssignableTo(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsAssignableTo(" + ")"); + source.Context.ExpressionBuilder.Append(".IsAssignableTo("); source.Context.ExpressionBuilder.Append(")"); return new IsAssignableToAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.Net4_7.verified.txt index 64576dd105..c44e2eeba7 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.MultipleGenericParameters.Net4_7.verified.txt @@ -20,7 +20,7 @@ public static class IsAssignableToAssertionExtensions /// public static IsAssignableToAssertion IsAssignableTo(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsAssignableTo(" + ")"); + source.Context.ExpressionBuilder.Append(".IsAssignableTo("); source.Context.ExpressionBuilder.Append(")"); return new IsAssignableToAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet10_0.verified.txt index e94665f00a..0e71d35e99 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet10_0.verified.txt @@ -20,7 +20,7 @@ public static class StringIsEmptyAssertionExtensions /// public static StringIsEmptyAssertion IsEmpty(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsEmpty(" + ")"); + source.Context.ExpressionBuilder.Append(".IsEmpty("); source.Context.ExpressionBuilder.Append(")"); return new StringIsEmptyAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet8_0.verified.txt index e94665f00a..0e71d35e99 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet8_0.verified.txt @@ -20,7 +20,7 @@ public static class StringIsEmptyAssertionExtensions /// public static StringIsEmptyAssertion IsEmpty(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsEmpty(" + ")"); + source.Context.ExpressionBuilder.Append(".IsEmpty("); source.Context.ExpressionBuilder.Append(")"); return new StringIsEmptyAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet9_0.verified.txt index e94665f00a..0e71d35e99 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.DotNet9_0.verified.txt @@ -20,7 +20,7 @@ public static class StringIsEmptyAssertionExtensions /// public static StringIsEmptyAssertion IsEmpty(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsEmpty(" + ")"); + source.Context.ExpressionBuilder.Append(".IsEmpty("); source.Context.ExpressionBuilder.Append(")"); return new StringIsEmptyAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.Net4_7.verified.txt index e94665f00a..0e71d35e99 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.NonGenericAssertion.Net4_7.verified.txt @@ -20,7 +20,7 @@ public static class StringIsEmptyAssertionExtensions /// public static StringIsEmptyAssertion IsEmpty(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsEmpty(" + ")"); + source.Context.ExpressionBuilder.Append(".IsEmpty("); source.Context.ExpressionBuilder.Append(")"); return new StringIsEmptyAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet10_0.verified.txt index cb5f1ba8b5..3e4ab6af6a 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet10_0.verified.txt @@ -20,7 +20,7 @@ public static class NullAssertionExtensions /// public static NullAssertion IsNull(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsNull(" + ")"); + source.Context.ExpressionBuilder.Append(".IsNull("); source.Context.ExpressionBuilder.Append(")"); return new NullAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet8_0.verified.txt index cb5f1ba8b5..3e4ab6af6a 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet8_0.verified.txt @@ -20,7 +20,7 @@ public static class NullAssertionExtensions /// public static NullAssertion IsNull(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsNull(" + ")"); + source.Context.ExpressionBuilder.Append(".IsNull("); source.Context.ExpressionBuilder.Append(")"); return new NullAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet9_0.verified.txt index cb5f1ba8b5..3e4ab6af6a 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.DotNet9_0.verified.txt @@ -20,7 +20,7 @@ public static class NullAssertionExtensions /// public static NullAssertion IsNull(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsNull(" + ")"); + source.Context.ExpressionBuilder.Append(".IsNull("); source.Context.ExpressionBuilder.Append(")"); return new NullAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.Net4_7.verified.txt index cb5f1ba8b5..3e4ab6af6a 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/AssertionExtensionGeneratorTests.SingleGenericParameter.Net4_7.verified.txt @@ -20,7 +20,7 @@ public static class NullAssertionExtensions /// public static NullAssertion IsNull(this IAssertionSource source) { - source.Context.ExpressionBuilder.Append(".IsNull(" + ")"); + source.Context.ExpressionBuilder.Append(".IsNull("); source.Context.ExpressionBuilder.Append(")"); return new NullAssertion(source.Context); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet10_0.verified.txt index ecbe2c03f5..4d34ecf398 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class Bool_IsFalse_Assertion : Assertion /// public sealed class NullableBool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -99,9 +105,9 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion } var result = value! == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -115,6 +121,8 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion /// public sealed class NullableBool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -136,9 +144,9 @@ public sealed class NullableBool_IsFalse_Assertion : Assertion } var result = value! == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet8_0.verified.txt index ecbe2c03f5..4d34ecf398 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class Bool_IsFalse_Assertion : Assertion /// public sealed class NullableBool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -99,9 +105,9 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion } var result = value! == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -115,6 +121,8 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion /// public sealed class NullableBool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -136,9 +144,9 @@ public sealed class NullableBool_IsFalse_Assertion : Assertion } var result = value! == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet9_0.verified.txt index ecbe2c03f5..4d34ecf398 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class Bool_IsFalse_Assertion : Assertion /// public sealed class NullableBool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -99,9 +105,9 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion } var result = value! == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -115,6 +121,8 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion /// public sealed class NullableBool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -136,9 +144,9 @@ public sealed class NullableBool_IsFalse_Assertion : Assertion } var result = value! == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.Net4_7.verified.txt index ecbe2c03f5..4d34ecf398 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/BooleanAssertionGeneratorTests.GeneratesBooleanAssertions.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class Bool_IsFalse_Assertion : Assertion /// public sealed class NullableBool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -99,9 +105,9 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion } var result = value! == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -115,6 +121,8 @@ public sealed class NullableBool_IsTrue_Assertion : Assertion /// public sealed class NullableBool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public NullableBool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -136,9 +144,9 @@ public sealed class NullableBool_IsFalse_Assertion : Assertion } var result = value! == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/DateTimeOffsetAssertionGeneratorTests.GeneratesDateTimeOffsetAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/DateTimeOffsetAssertionGeneratorTests.GeneratesDateTimeOffsetAssertions.DotNet10_0.verified.txt index 245ae30372..ac66619ac1 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/DateTimeOffsetAssertionGeneratorTests.GeneratesDateTimeOffsetAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/DateTimeOffsetAssertionGeneratorTests.GeneratesDateTimeOffsetAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class DateTimeOffset_IsToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsToday_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DateTimeOffset_IsToday_Assertion : Assertion public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotToday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion public sealed class DateTimeOffset_IsUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsUtc_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DateTimeOffset_IsUtc_Assertion : Assertion public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotUtc_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsLeapYear_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotLeapYear_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFuture_Assertion(AssertionContext context) : base(context) { @@ -222,9 +236,9 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion global::System.DateTimeOffset.Now; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -238,6 +252,8 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion public sealed class DateTimeOffset_IsInPast_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPast_Assertion(AssertionContext context) : base(context) { @@ -254,9 +270,9 @@ public sealed class DateTimeOffset_IsInPast_Assertion : Assertion public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFutureUtc_Assertion(AssertionContext context) : base(context) { @@ -286,9 +304,9 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion global::System.DateTimeOffset.UtcNow; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -302,6 +320,8 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPastUtc_Assertion(AssertionContext context) : base(context) { @@ -318,9 +338,9 @@ public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekend_Assertion(AssertionContext context) : base(context) { @@ -350,9 +372,9 @@ public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekday_Assertion(AssertionContext context) : base(context) { @@ -382,9 +406,9 @@ public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion public sealed class DateTimeOffset_IsToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsToday_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DateTimeOffset_IsToday_Assertion : Assertion public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotToday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion public sealed class DateTimeOffset_IsUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsUtc_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DateTimeOffset_IsUtc_Assertion : Assertion public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotUtc_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsLeapYear_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotLeapYear_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFuture_Assertion(AssertionContext context) : base(context) { @@ -222,9 +236,9 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion global::System.DateTimeOffset.Now; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -238,6 +252,8 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion public sealed class DateTimeOffset_IsInPast_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPast_Assertion(AssertionContext context) : base(context) { @@ -254,9 +270,9 @@ public sealed class DateTimeOffset_IsInPast_Assertion : Assertion public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFutureUtc_Assertion(AssertionContext context) : base(context) { @@ -286,9 +304,9 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion global::System.DateTimeOffset.UtcNow; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -302,6 +320,8 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPastUtc_Assertion(AssertionContext context) : base(context) { @@ -318,9 +338,9 @@ public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekend_Assertion(AssertionContext context) : base(context) { @@ -350,9 +372,9 @@ public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekday_Assertion(AssertionContext context) : base(context) { @@ -382,9 +406,9 @@ public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion public sealed class DateTimeOffset_IsToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsToday_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DateTimeOffset_IsToday_Assertion : Assertion public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotToday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion public sealed class DateTimeOffset_IsUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsUtc_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DateTimeOffset_IsUtc_Assertion : Assertion public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotUtc_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsLeapYear_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotLeapYear_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFuture_Assertion(AssertionContext context) : base(context) { @@ -222,9 +236,9 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion global::System.DateTimeOffset.Now; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -238,6 +252,8 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion public sealed class DateTimeOffset_IsInPast_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPast_Assertion(AssertionContext context) : base(context) { @@ -254,9 +270,9 @@ public sealed class DateTimeOffset_IsInPast_Assertion : Assertion public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFutureUtc_Assertion(AssertionContext context) : base(context) { @@ -286,9 +304,9 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion global::System.DateTimeOffset.UtcNow; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -302,6 +320,8 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPastUtc_Assertion(AssertionContext context) : base(context) { @@ -318,9 +338,9 @@ public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekend_Assertion(AssertionContext context) : base(context) { @@ -350,9 +372,9 @@ public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekday_Assertion(AssertionContext context) : base(context) { @@ -382,9 +406,9 @@ public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion public sealed class DateTimeOffset_IsToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsToday_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DateTimeOffset_IsToday_Assertion : Assertion public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotToday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DateTimeOffset_IsNotToday_Assertion : Assertion public sealed class DateTimeOffset_IsUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsUtc_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DateTimeOffset_IsUtc_Assertion : Assertion public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotUtc_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DateTimeOffset_IsNotUtc_Assertion : Assertion public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsLeapYear_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class DateTimeOffset_IsLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsNotLeapYear_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class DateTimeOffset_IsNotLeapYear_Assertion : Assertion public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFuture_Assertion(AssertionContext context) : base(context) { @@ -222,9 +236,9 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion global::System.DateTimeOffset.Now; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -238,6 +252,8 @@ public sealed class DateTimeOffset_IsInFuture_Assertion : Assertion public sealed class DateTimeOffset_IsInPast_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPast_Assertion(AssertionContext context) : base(context) { @@ -254,9 +270,9 @@ public sealed class DateTimeOffset_IsInPast_Assertion : Assertion public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInFutureUtc_Assertion(AssertionContext context) : base(context) { @@ -286,9 +304,9 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion global::System.DateTimeOffset.UtcNow; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -302,6 +320,8 @@ public sealed class DateTimeOffset_IsInFutureUtc_Assertion : Assertion public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsInPastUtc_Assertion(AssertionContext context) : base(context) { @@ -318,9 +338,9 @@ public sealed class DateTimeOffset_IsInPastUtc_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekend_Assertion(AssertionContext context) : base(context) { @@ -350,9 +372,9 @@ public sealed class DateTimeOffset_IsOnWeekend_Assertion : Assertion public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DateTimeOffset_IsOnWeekday_Assertion(AssertionContext context) : base(context) { @@ -382,9 +406,9 @@ public sealed class DateTimeOffset_IsOnWeekday_Assertion : Assertion public sealed class DayOfWeek_IsWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekend_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion } var result = value == global::System.DayOfWeek.Saturday || value == global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion /// public sealed class DayOfWeek_IsWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion } var result = value != global::System.DayOfWeek.Saturday && value != global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion /// public sealed class DayOfWeek_IsMonday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsMonday_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Monday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion /// public sealed class DayOfWeek_IsFriday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsFriday_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DayOfWeek_IsFriday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Friday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet8_0.verified.txt index 42d5717782..081131daf4 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class DayOfWeek_IsWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekend_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion } var result = value == global::System.DayOfWeek.Saturday || value == global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion /// public sealed class DayOfWeek_IsWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion } var result = value != global::System.DayOfWeek.Saturday && value != global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion /// public sealed class DayOfWeek_IsMonday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsMonday_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Monday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion /// public sealed class DayOfWeek_IsFriday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsFriday_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DayOfWeek_IsFriday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Friday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet9_0.verified.txt index 42d5717782..081131daf4 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class DayOfWeek_IsWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekend_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion } var result = value == global::System.DayOfWeek.Saturday || value == global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion /// public sealed class DayOfWeek_IsWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion } var result = value != global::System.DayOfWeek.Saturday && value != global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion /// public sealed class DayOfWeek_IsMonday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsMonday_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Monday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion /// public sealed class DayOfWeek_IsFriday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsFriday_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DayOfWeek_IsFriday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Friday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.Net4_7.verified.txt index 42d5717782..081131daf4 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/DayOfWeekAssertionGeneratorTests.GeneratesDayOfWeekAssertions.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class DayOfWeek_IsWeekend_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekend_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion } var result = value == global::System.DayOfWeek.Saturday || value == global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class DayOfWeek_IsWeekend_Assertion : Assertion /// public sealed class DayOfWeek_IsWeekday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsWeekday_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion } var result = value != global::System.DayOfWeek.Saturday && value != global::System.DayOfWeek.Sunday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class DayOfWeek_IsWeekday_Assertion : Assertion /// public sealed class DayOfWeek_IsMonday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsMonday_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Monday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class DayOfWeek_IsMonday_Assertion : Assertion /// public sealed class DayOfWeek_IsFriday_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public DayOfWeek_IsFriday_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class DayOfWeek_IsFriday_Assertion : Assertion } var result = value == global::System.DayOfWeek.Friday; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/ExceptionAssertionGeneratorTests.GeneratesExceptionAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/ExceptionAssertionGeneratorTests.GeneratesExceptionAssertions.DotNet10_0.verified.txt index 171642cd46..776124a663 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/ExceptionAssertionGeneratorTests.GeneratesExceptionAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/ExceptionAssertionGeneratorTests.GeneratesExceptionAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Exception_HasInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasInnerException_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Exception_HasInnerException_Assertion : Assertion public sealed class Exception_HasNoInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoInnerException_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Exception_HasNoInnerException_Assertion : Assertion public sealed class Exception_HasStackTrace_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasStackTrace_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Exception_HasStackTrace_Assertion : Assertion public sealed class Exception_HasNoData_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoData_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Exception_HasNoData_Assertion : Assertion } var result = value!.Data.Count == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class Exception_HasNoData_Assertion : Assertion /// public sealed class Exception_HasHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasHelpLink_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Exception_HasHelpLink_Assertion : Assertion public sealed class Exception_HasNoHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoHelpLink_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Exception_HasNoHelpLink_Assertion : Assertion public sealed class Exception_HasSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasSource_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class Exception_HasSource_Assertion : Assertion } var result = !string.IsNullOrWhiteSpace(value!.Source); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -273,6 +287,8 @@ public sealed class Exception_HasSource_Assertion : Assertion /// public sealed class Exception_HasNoSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoSource_Assertion(AssertionContext context) : base(context) { @@ -294,9 +310,9 @@ public sealed class Exception_HasNoSource_Assertion : Assertion public sealed class Exception_HasTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasTargetSite_Assertion(AssertionContext context) : base(context) { @@ -332,9 +350,9 @@ public sealed class Exception_HasTargetSite_Assertion : Assertion public sealed class Exception_HasNoTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoTargetSite_Assertion(AssertionContext context) : base(context) { @@ -370,9 +390,9 @@ public sealed class Exception_HasNoTargetSite_Assertion : Assertion public sealed class Exception_HasInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasInnerException_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Exception_HasInnerException_Assertion : Assertion public sealed class Exception_HasNoInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoInnerException_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Exception_HasNoInnerException_Assertion : Assertion public sealed class Exception_HasStackTrace_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasStackTrace_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Exception_HasStackTrace_Assertion : Assertion public sealed class Exception_HasNoData_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoData_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Exception_HasNoData_Assertion : Assertion } var result = value!.Data.Count == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class Exception_HasNoData_Assertion : Assertion /// public sealed class Exception_HasHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasHelpLink_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Exception_HasHelpLink_Assertion : Assertion public sealed class Exception_HasNoHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoHelpLink_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Exception_HasNoHelpLink_Assertion : Assertion public sealed class Exception_HasSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasSource_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class Exception_HasSource_Assertion : Assertion } var result = !string.IsNullOrWhiteSpace(value!.Source); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -273,6 +287,8 @@ public sealed class Exception_HasSource_Assertion : Assertion /// public sealed class Exception_HasNoSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoSource_Assertion(AssertionContext context) : base(context) { @@ -294,9 +310,9 @@ public sealed class Exception_HasNoSource_Assertion : Assertion public sealed class Exception_HasTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasTargetSite_Assertion(AssertionContext context) : base(context) { @@ -332,9 +350,9 @@ public sealed class Exception_HasTargetSite_Assertion : Assertion public sealed class Exception_HasNoTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoTargetSite_Assertion(AssertionContext context) : base(context) { @@ -370,9 +390,9 @@ public sealed class Exception_HasNoTargetSite_Assertion : Assertion public sealed class Exception_HasInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasInnerException_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Exception_HasInnerException_Assertion : Assertion public sealed class Exception_HasNoInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoInnerException_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Exception_HasNoInnerException_Assertion : Assertion public sealed class Exception_HasStackTrace_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasStackTrace_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Exception_HasStackTrace_Assertion : Assertion public sealed class Exception_HasNoData_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoData_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Exception_HasNoData_Assertion : Assertion } var result = value!.Data.Count == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class Exception_HasNoData_Assertion : Assertion /// public sealed class Exception_HasHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasHelpLink_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Exception_HasHelpLink_Assertion : Assertion public sealed class Exception_HasNoHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoHelpLink_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Exception_HasNoHelpLink_Assertion : Assertion public sealed class Exception_HasSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasSource_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class Exception_HasSource_Assertion : Assertion } var result = !string.IsNullOrWhiteSpace(value!.Source); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -273,6 +287,8 @@ public sealed class Exception_HasSource_Assertion : Assertion /// public sealed class Exception_HasNoSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoSource_Assertion(AssertionContext context) : base(context) { @@ -294,9 +310,9 @@ public sealed class Exception_HasNoSource_Assertion : Assertion public sealed class Exception_HasTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasTargetSite_Assertion(AssertionContext context) : base(context) { @@ -332,9 +350,9 @@ public sealed class Exception_HasTargetSite_Assertion : Assertion public sealed class Exception_HasNoTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoTargetSite_Assertion(AssertionContext context) : base(context) { @@ -370,9 +390,9 @@ public sealed class Exception_HasNoTargetSite_Assertion : Assertion public sealed class Exception_HasInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasInnerException_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Exception_HasInnerException_Assertion : Assertion public sealed class Exception_HasNoInnerException_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoInnerException_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Exception_HasNoInnerException_Assertion : Assertion public sealed class Exception_HasStackTrace_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasStackTrace_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Exception_HasStackTrace_Assertion : Assertion public sealed class Exception_HasNoData_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoData_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Exception_HasNoData_Assertion : Assertion } var result = value!.Data.Count == 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class Exception_HasNoData_Assertion : Assertion /// public sealed class Exception_HasHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasHelpLink_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Exception_HasHelpLink_Assertion : Assertion public sealed class Exception_HasNoHelpLink_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoHelpLink_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Exception_HasNoHelpLink_Assertion : Assertion public sealed class Exception_HasSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasSource_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class Exception_HasSource_Assertion : Assertion } var result = !string.IsNullOrWhiteSpace(value!.Source); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -273,6 +287,8 @@ public sealed class Exception_HasSource_Assertion : Assertion /// public sealed class Exception_HasNoSource_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoSource_Assertion(AssertionContext context) : base(context) { @@ -294,9 +310,9 @@ public sealed class Exception_HasNoSource_Assertion : Assertion public sealed class Exception_HasTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasTargetSite_Assertion(AssertionContext context) : base(context) { @@ -331,9 +349,9 @@ public sealed class Exception_HasTargetSite_Assertion : Assertion public sealed class Exception_HasNoTargetSite_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Exception_HasNoTargetSite_Assertion(AssertionContext context) : base(context) { @@ -368,9 +388,9 @@ public sealed class Exception_HasNoTargetSite_Assertion : Assertion public sealed class Guid_IsEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion } var result = value == global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion /// public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsNotEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion } var result = value != global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet8_0.verified.txt index ea378396a3..9784892a44 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Guid_IsEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion } var result = value == global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion /// public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsNotEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion } var result = value != global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet9_0.verified.txt index ea378396a3..9784892a44 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Guid_IsEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion } var result = value == global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion /// public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsNotEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion } var result = value != global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.Net4_7.verified.txt index ea378396a3..9784892a44 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/GuidAssertionGeneratorTests.GeneratesGuidAssertions.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Guid_IsEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion } var result = value == global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Guid_IsEmptyGuid_Assertion : Assertion /// public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Guid_IsNotEmptyGuid_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Guid_IsNotEmptyGuid_Assertion : Assertion } var result = value != global::System.Guid.Empty; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet10_0.verified.txt index 8c29161685..f213276218 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsSuccess_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion= 200 and < 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsNotSuccess_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion= 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsClientError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsClientError_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion= 400 and < 500; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion public sealed class HttpStatusCode_IsServerError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsServerError_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion= 500 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsRedirection_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion= 300 and < 400; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion public sealed class HttpStatusCode_IsInformational_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsInformational_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion= 100 and < 200; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -236,6 +248,8 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion public sealed class HttpStatusCode_IsError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsError_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class HttpStatusCode_IsError_Assertion : Assertion } var result = (int)value! is >= 400 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet8_0.verified.txt index 8c29161685..f213276218 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsSuccess_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion= 200 and < 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsNotSuccess_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion= 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsClientError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsClientError_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion= 400 and < 500; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion public sealed class HttpStatusCode_IsServerError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsServerError_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion= 500 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsRedirection_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion= 300 and < 400; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion public sealed class HttpStatusCode_IsInformational_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsInformational_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion= 100 and < 200; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -236,6 +248,8 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion public sealed class HttpStatusCode_IsError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsError_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class HttpStatusCode_IsError_Assertion : Assertion } var result = (int)value! is >= 400 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet9_0.verified.txt index 8c29161685..f213276218 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsSuccess_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion= 200 and < 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsNotSuccess_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion= 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsClientError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsClientError_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion= 400 and < 500; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion public sealed class HttpStatusCode_IsServerError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsServerError_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion= 500 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -162,6 +170,8 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsRedirection_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion= 300 and < 400; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion public sealed class HttpStatusCode_IsInformational_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsInformational_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion= 100 and < 200; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -236,6 +248,8 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion public sealed class HttpStatusCode_IsError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsError_Assertion(AssertionContext context) : base(context) { @@ -257,9 +271,9 @@ public sealed class HttpStatusCode_IsError_Assertion : Assertion } var result = (int)value! is >= 400 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.Net4_7.verified.txt index 2890b175d7..f798372331 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/HttpStatusCodeAssertionGeneratorTests.GeneratesHttpStatusCodeAssertions.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsSuccess_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion= 200 and < 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class HttpStatusCode_IsSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsNotSuccess_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion= 300; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class HttpStatusCode_IsNotSuccess_Assertion : Assertion public sealed class HttpStatusCode_IsClientError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsClientError_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion= 400 and < 500; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class HttpStatusCode_IsClientError_Assertion : Assertion public sealed class HttpStatusCode_IsServerError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsServerError_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion= 500 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -142,6 +150,8 @@ public sealed class HttpStatusCode_IsServerError_Assertion : Assertion public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsRedirection_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion= 300 and < 400; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -174,6 +184,8 @@ public sealed class HttpStatusCode_IsRedirection_Assertion : Assertion public sealed class HttpStatusCode_IsInformational_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsInformational_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion= 100 and < 200; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -206,6 +218,8 @@ public sealed class HttpStatusCode_IsInformational_Assertion : Assertion public sealed class HttpStatusCode_IsError_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public HttpStatusCode_IsError_Assertion(AssertionContext context) : base(context) { @@ -222,9 +236,9 @@ public sealed class HttpStatusCode_IsError_Assertion : Assertion= 400 and < 600; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/LazyAssertionGeneratorTests.GeneratesLazyAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/LazyAssertionGeneratorTests.GeneratesLazyAssertions.DotNet10_0.verified.txt index b6940aca84..85fdb06632 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/LazyAssertionGeneratorTests.GeneratesLazyAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/LazyAssertionGeneratorTests.GeneratesLazyAssertions.DotNet10_0.verified.txt @@ -15,6 +15,8 @@ namespace TUnit.Assertions.Extensions; [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class LazyT_IsValueCreated_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueCreated_Assertion(AssertionContext> context) : base(context) { @@ -36,9 +38,9 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion } var result = value!.IsValueCreated == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class LazyT_IsValueNotCreated_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueNotCreated_Assertion(AssertionContext> context) : base(context) { @@ -74,9 +78,9 @@ public sealed class LazyT_IsValueNotCreated_Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueCreated_Assertion(AssertionContext> context) : base(context) { @@ -36,9 +38,9 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion } var result = value!.IsValueCreated == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class LazyT_IsValueNotCreated_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueNotCreated_Assertion(AssertionContext> context) : base(context) { @@ -74,9 +78,9 @@ public sealed class LazyT_IsValueNotCreated_Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueCreated_Assertion(AssertionContext> context) : base(context) { @@ -36,9 +38,9 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion } var result = value!.IsValueCreated == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class LazyT_IsValueNotCreated_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueNotCreated_Assertion(AssertionContext> context) : base(context) { @@ -74,9 +78,9 @@ public sealed class LazyT_IsValueNotCreated_Assertion : Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueCreated_Assertion(AssertionContext> context) : base(context) { @@ -36,9 +38,9 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion } var result = value!.IsValueCreated == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class LazyT_IsValueCreated_Assertion : Assertion [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2091", Justification = "Generic type parameter is only used for property access, not instantiation")] public sealed class LazyT_IsValueNotCreated_Assertion : Assertion> { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public LazyT_IsValueNotCreated_Assertion(AssertionContext> context) : base(context) { @@ -74,9 +78,9 @@ public sealed class LazyT_IsValueNotCreated_Assertion : Assertion /// Generated extension method for ContainsMessage /// - public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet8_0.verified.txt index 2eaba629d7..7d5d14caef 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet8_0.verified.txt @@ -58,7 +58,7 @@ public static partial class ArrayTargetAssertionExtensions /// /// Generated extension method for ContainsMessage /// - public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet9_0.verified.txt index 2eaba629d7..7d5d14caef 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.DotNet9_0.verified.txt @@ -58,7 +58,7 @@ public static partial class ArrayTargetAssertionExtensions /// /// Generated extension method for ContainsMessage /// - public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.Net4_7.verified.txt index 2eaba629d7..7d5d14caef 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.ArrayTargetType.Net4_7.verified.txt @@ -58,7 +58,7 @@ public static partial class ArrayTargetAssertionExtensions /// /// Generated extension method for ContainsMessage /// - public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet10_0.verified.txt new file mode 100644 index 0000000000..56eb54174c --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet10_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatch +/// +public sealed class IEnumerableString_ContainsMatch_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatch_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var typedResult = value!.ContainsMatch(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return Task.FromResult(typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message)); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatch + /// + public static IEnumerableString_ContainsMatch_String_Assertion ContainsMatch(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatch({needleExpression})"); + return new IEnumerableString_ContainsMatch_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet8_0.verified.txt new file mode 100644 index 0000000000..56eb54174c --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet8_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatch +/// +public sealed class IEnumerableString_ContainsMatch_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatch_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var typedResult = value!.ContainsMatch(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return Task.FromResult(typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message)); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatch + /// + public static IEnumerableString_ContainsMatch_String_Assertion ContainsMatch(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatch({needleExpression})"); + return new IEnumerableString_ContainsMatch_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet9_0.verified.txt new file mode 100644 index 0000000000..56eb54174c --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.DotNet9_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatch +/// +public sealed class IEnumerableString_ContainsMatch_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatch_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var typedResult = value!.ContainsMatch(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return Task.FromResult(typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message)); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatch + /// + public static IEnumerableString_ContainsMatch_String_Assertion ContainsMatch(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatch({needleExpression})"); + return new IEnumerableString_ContainsMatch_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.Net4_7.verified.txt new file mode 100644 index 0000000000..56eb54174c --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AssertionResultOfTMethod.Net4_7.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatch +/// +public sealed class IEnumerableString_ContainsMatch_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatch_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var typedResult = value!.ContainsMatch(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return Task.FromResult(typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message)); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatch + /// + public static IEnumerableString_ContainsMatch_String_Assertion ContainsMatch(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatch({needleExpression})"); + return new IEnumerableString_ContainsMatch_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet10_0.verified.txt new file mode 100644 index 0000000000..25500147f3 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet10_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatchAsync +/// +public sealed class IEnumerableString_ContainsMatchAsync_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatchAsync_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override async Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return AssertionResult.Failed($"threw {exception.GetType().FullName}"); + } + + if (value is null) + { + return AssertionResult.Failed("Actual value is null"); + } + + var typedResult = await value!.ContainsMatchAsync(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AsyncAssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatchAsync + /// + public static IEnumerableString_ContainsMatchAsync_String_Assertion ContainsMatchAsync(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatchAsync({needleExpression})"); + return new IEnumerableString_ContainsMatchAsync_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet8_0.verified.txt new file mode 100644 index 0000000000..25500147f3 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet8_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatchAsync +/// +public sealed class IEnumerableString_ContainsMatchAsync_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatchAsync_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override async Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return AssertionResult.Failed($"threw {exception.GetType().FullName}"); + } + + if (value is null) + { + return AssertionResult.Failed("Actual value is null"); + } + + var typedResult = await value!.ContainsMatchAsync(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AsyncAssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatchAsync + /// + public static IEnumerableString_ContainsMatchAsync_String_Assertion ContainsMatchAsync(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatchAsync({needleExpression})"); + return new IEnumerableString_ContainsMatchAsync_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet9_0.verified.txt new file mode 100644 index 0000000000..25500147f3 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.DotNet9_0.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatchAsync +/// +public sealed class IEnumerableString_ContainsMatchAsync_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatchAsync_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override async Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return AssertionResult.Failed($"threw {exception.GetType().FullName}"); + } + + if (value is null) + { + return AssertionResult.Failed("Actual value is null"); + } + + var typedResult = await value!.ContainsMatchAsync(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AsyncAssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatchAsync + /// + public static IEnumerableString_ContainsMatchAsync_String_Assertion ContainsMatchAsync(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatchAsync({needleExpression})"); + return new IEnumerableString_ContainsMatchAsync_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.Net4_7.verified.txt new file mode 100644 index 0000000000..25500147f3 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.AsyncAssertionResultOfTMethod.Net4_7.verified.txt @@ -0,0 +1,81 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMatchAsync +/// +public sealed class IEnumerableString_ContainsMatchAsync_String_Assertion : Assertion> +{ + private readonly string _needle; + private string? _result; + + public IEnumerableString_ContainsMatchAsync_String_Assertion(AssertionContext> context, string needle) + : base(context) + { + _needle = needle; + } + + protected override async Task CheckAsync(EvaluationMetadata> metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return AssertionResult.Failed($"threw {exception.GetType().FullName}"); + } + + if (value is null) + { + return AssertionResult.Failed("Actual value is null"); + } + + var typedResult = await value!.ContainsMatchAsync(_needle); + if (typedResult.IsPassed) + { + _result = typedResult.Value; + } + return typedResult.IsPassed + ? AssertionResult.Passed + : AssertionResult.Failed(typedResult.Message); + } + + protected override string GetExpectation() + { + return $"to contain '{_needle}'"; + } + + public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() + { + return ExecuteAndReturnResultAsync().GetAwaiter(); + } + + private async Task ExecuteAndReturnResultAsync() + { + await AssertAsync(); + return _result!; + } +} + +public static partial class AsyncAssertionResultOfTMethodExtensions +{ + /// + /// Generated extension method for ContainsMatchAsync + /// + public static IEnumerableString_ContainsMatchAsync_String_Assertion ContainsMatchAsync(this IAssertionSource> source, string needle, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMatchAsync({needleExpression})"); + return new IEnumerableString_ContainsMatchAsync_String_Assertion(source.Context, needle); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet10_0.verified.txt index 14e93fd1ff..0e9e1cacfd 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value!.IsPositive(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -65,9 +69,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value!.IsGreaterThan(_threshold); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet8_0.verified.txt index 14e93fd1ff..0e9e1cacfd 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value!.IsPositive(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -65,9 +69,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value!.IsGreaterThan(_threshold); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet9_0.verified.txt index 14e93fd1ff..0e9e1cacfd 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value!.IsPositive(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -65,9 +69,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value!.IsGreaterThan(_threshold); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.Net4_7.verified.txt index 14e93fd1ff..0e9e1cacfd 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.BoolMethod.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value!.IsPositive(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -65,9 +69,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value!.IsGreaterThan(_threshold); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet10_0.verified.txt index 0081bddb5a..685c85de5e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -111,6 +115,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -127,9 +133,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -143,6 +149,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -162,9 +170,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value > _threshold; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet8_0.verified.txt index 0081bddb5a..685c85de5e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -111,6 +115,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -127,9 +133,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -143,6 +149,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -162,9 +170,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value > _threshold; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet9_0.verified.txt index 0081bddb5a..685c85de5e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -111,6 +115,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -127,9 +133,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -143,6 +149,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -162,9 +170,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value > _threshold; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.Net4_7.verified.txt index 0081bddb5a..685c85de5e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.FileScopedClassWithInlining.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Bool_IsTrue_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsTrue_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class Bool_IsTrue_Assertion : Assertion } var result = value == true; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class Bool_IsTrue_Assertion : Assertion /// public sealed class Bool_IsFalse_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Bool_IsFalse_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class Bool_IsFalse_Assertion : Assertion } var result = value == false; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -111,6 +115,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class Int_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Int_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -127,9 +133,9 @@ public sealed class Int_IsPositive_Assertion : Assertion } var result = value > 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -143,6 +149,8 @@ public sealed class Int_IsPositive_Assertion : Assertion /// public sealed class Int_IsGreaterThan_Int_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly int _threshold; public Int_IsGreaterThan_Int_Assertion(AssertionContext context, int threshold) @@ -162,9 +170,9 @@ public sealed class Int_IsGreaterThan_Int_Assertion : Assertion } var result = value > _threshold; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet10_0.verified.txt index f859e71744..8c68994ed6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class ResultTValue_IsErrorOfType_Assertion : Assertion> where TError : System.Exception { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public ResultTValue_IsErrorOfType_Assertion(AssertionContext> context) : base(context) { @@ -37,9 +39,9 @@ public sealed class ResultTValue_IsErrorOfType_Assertion : Asser } var result = value!.IsErrorOfType(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet8_0.verified.txt index f859e71744..8c68994ed6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class ResultTValue_IsErrorOfType_Assertion : Assertion> where TError : System.Exception { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public ResultTValue_IsErrorOfType_Assertion(AssertionContext> context) : base(context) { @@ -37,9 +39,9 @@ public sealed class ResultTValue_IsErrorOfType_Assertion : Asser } var result = value!.IsErrorOfType(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet9_0.verified.txt index f859e71744..8c68994ed6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class ResultTValue_IsErrorOfType_Assertion : Assertion> where TError : System.Exception { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public ResultTValue_IsErrorOfType_Assertion(AssertionContext> context) : base(context) { @@ -37,9 +39,9 @@ public sealed class ResultTValue_IsErrorOfType_Assertion : Asser } var result = value!.IsErrorOfType(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.Net4_7.verified.txt index f859e71744..8c68994ed6 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.GenericMethodWithNonInferableTypeParameter.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class ResultTValue_IsErrorOfType_Assertion : Assertion> where TError : System.Exception { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public ResultTValue_IsErrorOfType_Assertion(AssertionContext> context) : base(context) { @@ -37,9 +39,9 @@ public sealed class ResultTValue_IsErrorOfType_Assertion : Asser } var result = value!.IsErrorOfType(); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet10_0.verified.txt index 64d6ea5e38..e1995b2e3c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsGreaterThan_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _other; public Int_IsGreaterThan_T_Assertion(AssertionContext context, T other) @@ -35,9 +37,9 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion } var result = value!.IsGreaterThan(_other); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion public sealed class Int_IsBetween_T_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _min; private readonly T _max; @@ -74,9 +78,9 @@ public sealed class Int_IsBetween_T_T_Assertion : Assertion } var result = value!.IsBetween(_min, _max); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet8_0.verified.txt index 64d6ea5e38..e1995b2e3c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsGreaterThan_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _other; public Int_IsGreaterThan_T_Assertion(AssertionContext context, T other) @@ -35,9 +37,9 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion } var result = value!.IsGreaterThan(_other); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion public sealed class Int_IsBetween_T_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _min; private readonly T _max; @@ -74,9 +78,9 @@ public sealed class Int_IsBetween_T_T_Assertion : Assertion } var result = value!.IsBetween(_min, _max); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet9_0.verified.txt index 64d6ea5e38..e1995b2e3c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsGreaterThan_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _other; public Int_IsGreaterThan_T_Assertion(AssertionContext context, T other) @@ -35,9 +37,9 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion } var result = value!.IsGreaterThan(_other); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion public sealed class Int_IsBetween_T_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _min; private readonly T _max; @@ -74,9 +78,9 @@ public sealed class Int_IsBetween_T_T_Assertion : Assertion } var result = value!.IsBetween(_min, _max); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.Net4_7.verified.txt index 64d6ea5e38..e1995b2e3c 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithComparableConstraint.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsGreaterThan_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _other; public Int_IsGreaterThan_T_Assertion(AssertionContext context, T other) @@ -35,9 +37,9 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion } var result = value!.IsGreaterThan(_other); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -53,6 +55,8 @@ public sealed class Int_IsGreaterThan_T_Assertion : Assertion public sealed class Int_IsBetween_T_T_Assertion : Assertion where T : System.IComparable { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _min; private readonly T _max; @@ -74,9 +78,9 @@ public sealed class Int_IsBetween_T_T_Assertion : Assertion } var result = value!.IsBetween(_min, _max); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet10_0.verified.txt index 09e708af86..a15383e2f8 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet10_0.verified.txt @@ -12,12 +12,14 @@ namespace TUnit.Assertions.Extensions; /// /// Generated assertion for ContainsMessage /// -public sealed class _ContainsMessage_String_Bool_Assertion : Assertion +public sealed class StringArray_ContainsMessage_String_Bool_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly string _needle; private readonly bool _exact; - public _ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) + public StringArray_ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) : base(context) { _needle = needle; @@ -40,9 +42,9 @@ public sealed class _ContainsMessage_String_Bool_Assertion : Assertion } var result = value!.ContainsMessage(_needle, _exact); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -56,10 +58,10 @@ public static partial class MethodWithDefaultValuesExtensions /// /// Generated extension method for ContainsMessage /// - public static _ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); - return new _ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); + return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet8_0.verified.txt index 09e708af86..a15383e2f8 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet8_0.verified.txt @@ -12,12 +12,14 @@ namespace TUnit.Assertions.Extensions; /// /// Generated assertion for ContainsMessage /// -public sealed class _ContainsMessage_String_Bool_Assertion : Assertion +public sealed class StringArray_ContainsMessage_String_Bool_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly string _needle; private readonly bool _exact; - public _ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) + public StringArray_ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) : base(context) { _needle = needle; @@ -40,9 +42,9 @@ public sealed class _ContainsMessage_String_Bool_Assertion : Assertion } var result = value!.ContainsMessage(_needle, _exact); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -56,10 +58,10 @@ public static partial class MethodWithDefaultValuesExtensions /// /// Generated extension method for ContainsMessage /// - public static _ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); - return new _ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); + return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet9_0.verified.txt index 09e708af86..a15383e2f8 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.DotNet9_0.verified.txt @@ -12,12 +12,14 @@ namespace TUnit.Assertions.Extensions; /// /// Generated assertion for ContainsMessage /// -public sealed class _ContainsMessage_String_Bool_Assertion : Assertion +public sealed class StringArray_ContainsMessage_String_Bool_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly string _needle; private readonly bool _exact; - public _ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) + public StringArray_ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) : base(context) { _needle = needle; @@ -40,9 +42,9 @@ public sealed class _ContainsMessage_String_Bool_Assertion : Assertion } var result = value!.ContainsMessage(_needle, _exact); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -56,10 +58,10 @@ public static partial class MethodWithDefaultValuesExtensions /// /// Generated extension method for ContainsMessage /// - public static _ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); - return new _ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); + return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.Net4_7.verified.txt index 09e708af86..a15383e2f8 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithDefaultValues.Net4_7.verified.txt @@ -12,12 +12,14 @@ namespace TUnit.Assertions.Extensions; /// /// Generated assertion for ContainsMessage /// -public sealed class _ContainsMessage_String_Bool_Assertion : Assertion +public sealed class StringArray_ContainsMessage_String_Bool_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly string _needle; private readonly bool _exact; - public _ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) + public StringArray_ContainsMessage_String_Bool_Assertion(AssertionContext context, string needle, bool exact) : base(context) { _needle = needle; @@ -40,9 +42,9 @@ public sealed class _ContainsMessage_String_Bool_Assertion : Assertion } var result = value!.ContainsMessage(_needle, _exact); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -56,10 +58,10 @@ public static partial class MethodWithDefaultValuesExtensions /// /// Generated extension method for ContainsMessage /// - public static _ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) + public static StringArray_ContainsMessage_String_Bool_Assertion ContainsMessage(this IAssertionSource source, string needle, bool exact = true, [CallerArgumentExpression(nameof(needle))] string? needleExpression = null, [CallerArgumentExpression(nameof(exact))] string? exactExpression = null) { source.Context.ExpressionBuilder.Append($".ContainsMessage({needleExpression}, {exactExpression})"); - return new _ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); + return new StringArray_ContainsMessage_String_Bool_Assertion(source.Context, needle, exact); } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet10_0.verified.txt index 311a32b7f0..e46204ffc0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasProperty_T_Assertion : Assertion where T : class, System.IComparable, new() { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasProperty_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasProperty_T_Assertion : Assertion } var result = value!.HasProperty(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet8_0.verified.txt index 311a32b7f0..e46204ffc0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasProperty_T_Assertion : Assertion where T : class, System.IComparable, new() { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasProperty_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasProperty_T_Assertion : Assertion } var result = value!.HasProperty(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet9_0.verified.txt index 311a32b7f0..e46204ffc0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasProperty_T_Assertion : Assertion where T : class, System.IComparable, new() { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasProperty_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasProperty_T_Assertion : Assertion } var result = value!.HasProperty(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.Net4_7.verified.txt index 311a32b7f0..e46204ffc0 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithMultipleConstraints.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasProperty_T_Assertion : Assertion where T : class, System.IComparable, new() { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasProperty_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasProperty_T_Assertion : Assertion } var result = value!.HasProperty(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet10_0.verified.txt index 7d2c069b65..5e598d0389 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasValue_T_Assertion : Assertion where T : notnull { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasValue_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasValue_T_Assertion : Assertion } var result = value!.HasValue(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet8_0.verified.txt index 7d2c069b65..5e598d0389 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasValue_T_Assertion : Assertion where T : notnull { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasValue_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasValue_T_Assertion : Assertion } var result = value!.HasValue(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet9_0.verified.txt index 7d2c069b65..5e598d0389 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasValue_T_Assertion : Assertion where T : notnull { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasValue_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasValue_T_Assertion : Assertion } var result = value!.HasValue(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.Net4_7.verified.txt index 7d2c069b65..5e598d0389 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithNotNullConstraint.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_HasValue_T_Assertion : Assertion where T : notnull { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _value; public String_HasValue_T_Assertion(AssertionContext context, T value) @@ -40,9 +42,9 @@ public sealed class String_HasValue_T_Assertion : Assertion } var result = value!.HasValue(_value); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet10_0.verified.txt index d6160260ce..a1279d07a9 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_IsNullOrDefault_T_Assertion : Assertion where T : class { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public String_IsNullOrDefault_T_Assertion(AssertionContext context, T obj) @@ -40,9 +42,9 @@ public sealed class String_IsNullOrDefault_T_Assertion : Assertion } var result = value!.IsNullOrDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet8_0.verified.txt index d6160260ce..a1279d07a9 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_IsNullOrDefault_T_Assertion : Assertion where T : class { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public String_IsNullOrDefault_T_Assertion(AssertionContext context, T obj) @@ -40,9 +42,9 @@ public sealed class String_IsNullOrDefault_T_Assertion : Assertion } var result = value!.IsNullOrDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet9_0.verified.txt index d6160260ce..a1279d07a9 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_IsNullOrDefault_T_Assertion : Assertion where T : class { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public String_IsNullOrDefault_T_Assertion(AssertionContext context, T obj) @@ -40,9 +42,9 @@ public sealed class String_IsNullOrDefault_T_Assertion : Assertion } var result = value!.IsNullOrDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.Net4_7.verified.txt index d6160260ce..a1279d07a9 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithReferenceTypeConstraint.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class String_IsNullOrDefault_T_Assertion : Assertion where T : class { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public String_IsNullOrDefault_T_Assertion(AssertionContext context, T obj) @@ -40,9 +42,9 @@ public sealed class String_IsNullOrDefault_T_Assertion : Assertion } var result = value!.IsNullOrDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet10_0.verified.txt index ff335238f8..33bd9664f3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet10_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsDefault_T_Assertion : Assertion where T : struct { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public Int_IsDefault_T_Assertion(AssertionContext context, T obj) @@ -35,9 +37,9 @@ public sealed class Int_IsDefault_T_Assertion : Assertion } var result = value!.IsDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet8_0.verified.txt index ff335238f8..33bd9664f3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet8_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsDefault_T_Assertion : Assertion where T : struct { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public Int_IsDefault_T_Assertion(AssertionContext context, T obj) @@ -35,9 +37,9 @@ public sealed class Int_IsDefault_T_Assertion : Assertion } var result = value!.IsDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet9_0.verified.txt index ff335238f8..33bd9664f3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.DotNet9_0.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsDefault_T_Assertion : Assertion where T : struct { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public Int_IsDefault_T_Assertion(AssertionContext context, T obj) @@ -35,9 +37,9 @@ public sealed class Int_IsDefault_T_Assertion : Assertion } var result = value!.IsDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.Net4_7.verified.txt index ff335238f8..33bd9664f3 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.MethodWithValueTypeConstraint.Net4_7.verified.txt @@ -16,6 +16,8 @@ namespace TUnit.Assertions.Extensions; public sealed class Int_IsDefault_T_Assertion : Assertion where T : struct { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + private readonly T _obj; public Int_IsDefault_T_Assertion(AssertionContext context, T obj) @@ -35,9 +37,9 @@ public sealed class Int_IsDefault_T_Assertion : Assertion } var result = value!.IsDefault(_obj); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet10_0.verified.txt new file mode 100644 index 0000000000..eb11276d58 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet10_0.verified.txt @@ -0,0 +1,118 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMessage +/// +public sealed class String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _message; + + public String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string message) + : base(context) + { + _message = message; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.Contains(_message); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to contain {_message}"; + } +} + +/// +/// Generated assertion for EndsWithMessage +/// +public sealed class String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _suffix; + + public String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string suffix) + : base(context) + { + _suffix = suffix; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.EndsWith(_suffix); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to end with {_suffix}"; + } +} + +public static partial class RefStructParameterAssertions +{ + /// + /// Generated extension method for ContainsMessage + /// + public static String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion ContainsMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler message, [CallerArgumentExpression(nameof(message))] string? messageExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMessage({messageExpression})"); + return new String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, message.ToStringAndClear()); + } + + /// + /// Generated extension method for EndsWithMessage + /// + public static String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion EndsWithMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler suffix, [CallerArgumentExpression(nameof(suffix))] string? suffixExpression = null) + { + source.Context.ExpressionBuilder.Append($".EndsWithMessage({suffixExpression})"); + return new String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, suffix.ToStringAndClear()); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet8_0.verified.txt new file mode 100644 index 0000000000..eb11276d58 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet8_0.verified.txt @@ -0,0 +1,118 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMessage +/// +public sealed class String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _message; + + public String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string message) + : base(context) + { + _message = message; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.Contains(_message); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to contain {_message}"; + } +} + +/// +/// Generated assertion for EndsWithMessage +/// +public sealed class String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _suffix; + + public String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string suffix) + : base(context) + { + _suffix = suffix; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.EndsWith(_suffix); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to end with {_suffix}"; + } +} + +public static partial class RefStructParameterAssertions +{ + /// + /// Generated extension method for ContainsMessage + /// + public static String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion ContainsMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler message, [CallerArgumentExpression(nameof(message))] string? messageExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMessage({messageExpression})"); + return new String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, message.ToStringAndClear()); + } + + /// + /// Generated extension method for EndsWithMessage + /// + public static String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion EndsWithMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler suffix, [CallerArgumentExpression(nameof(suffix))] string? suffixExpression = null) + { + source.Context.ExpressionBuilder.Append($".EndsWithMessage({suffixExpression})"); + return new String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, suffix.ToStringAndClear()); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet9_0.verified.txt new file mode 100644 index 0000000000..eb11276d58 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.RefStructParameter.DotNet9_0.verified.txt @@ -0,0 +1,118 @@ +[ +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using TUnit.Assertions.Core; +using TUnit.Assertions.Tests.TestData; + +namespace TUnit.Assertions.Extensions; + +/// +/// Generated assertion for ContainsMessage +/// +public sealed class String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _message; + + public String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string message) + : base(context) + { + _message = message; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.Contains(_message); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to contain {_message}"; + } +} + +/// +/// Generated assertion for EndsWithMessage +/// +public sealed class String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion : Assertion +{ + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + + private readonly string _suffix; + + public String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(AssertionContext context, string suffix) + : base(context) + { + _suffix = suffix; + } + + protected override Task CheckAsync(EvaluationMetadata metadata) + { + var value = metadata.Value; + var exception = metadata.Exception; + + if (exception != null) + { + return Task.FromResult(AssertionResult.Failed($"threw {exception.GetType().FullName}")); + } + + if (value is null) + { + return Task.FromResult(AssertionResult.Failed("Actual value is null")); + } + + var result = value!.EndsWith(_suffix); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); + } + + protected override string GetExpectation() + { + return $"to end with {_suffix}"; + } +} + +public static partial class RefStructParameterAssertions +{ + /// + /// Generated extension method for ContainsMessage + /// + public static String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion ContainsMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler message, [CallerArgumentExpression(nameof(message))] string? messageExpression = null) + { + source.Context.ExpressionBuilder.Append($".ContainsMessage({messageExpression})"); + return new String_ContainsMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, message.ToStringAndClear()); + } + + /// + /// Generated extension method for EndsWithMessage + /// + public static String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion EndsWithMessage(this IAssertionSource source, System.Runtime.CompilerServices.DefaultInterpolatedStringHandler suffix, [CallerArgumentExpression(nameof(suffix))] string? suffixExpression = null) + { + source.Context.ExpressionBuilder.Append($".EndsWithMessage({suffixExpression})"); + return new String_EndsWithMessage_DefaultInterpolatedStringHandler_Assertion(source.Context, suffix.ToStringAndClear()); + } + +} + +] \ No newline at end of file diff --git a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.cs b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.cs index ea3d293e50..ffa7840ec2 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.cs +++ b/TUnit.Assertions.SourceGenerator.Tests/MethodAssertionGeneratorTests.cs @@ -226,6 +226,7 @@ public Task RefStructParameter() => RunTest( "TUnit.Assertions.SourceGenerator.Tests", "TestData", "RefStructParameterAssertion.cs"), + new RunTestOptions { PreprocessorSymbols = ["NET6_0_OR_GREATER"] }, async generatedFiles => { await Assert.That(generatedFiles).HasCount(1); @@ -252,6 +253,48 @@ public Task RefStructParameter() => RunTest( }); #endif + [Test] + public Task AssertionResultOfTMethod() => RunTest( + Path.Combine(Sourcy.Git.RootDirectory.FullName, + "TUnit.Assertions.SourceGenerator.Tests", + "TestData", + "AssertionResultOfTMethodAssertion.cs"), + async generatedFiles => + { + await Assert.That(generatedFiles).HasCount(1); + + var mainFile = generatedFiles.First(); + await Assert.That(mainFile).Contains("IEnumerableString_ContainsMatch_String_Assertion"); + // Terminal assertion: should have _result field + await Assert.That(mainFile).Contains("private string? _result;"); + // Terminal assertion: should have new GetAwaiter + await Assert.That(mainFile).Contains("public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter()"); + // Should unwrap AssertionResult to AssertionResult + await Assert.That(mainFile).Contains("var typedResult ="); + await Assert.That(mainFile).Contains("_result = typedResult.Value;"); + }); + + [Test] + public Task AsyncAssertionResultOfTMethod() => RunTest( + Path.Combine(Sourcy.Git.RootDirectory.FullName, + "TUnit.Assertions.SourceGenerator.Tests", + "TestData", + "AsyncAssertionResultOfTAssertion.cs"), + async generatedFiles => + { + await Assert.That(generatedFiles).HasCount(1); + + var mainFile = generatedFiles.First(); + await Assert.That(mainFile).Contains("IEnumerableString_ContainsMatchAsync_String_Assertion"); + // Terminal assertion: should have _result field + await Assert.That(mainFile).Contains("private string? _result;"); + // Terminal assertion: should have new GetAwaiter + await Assert.That(mainFile).Contains("public new System.Runtime.CompilerServices.TaskAwaiter GetAwaiter()"); + // Async: should await the method call + await Assert.That(mainFile).Contains("var typedResult = await"); + await Assert.That(mainFile).Contains("_result = typedResult.Value;"); + }); + [Test] public Task ArrayTargetType() => RunTest( Path.Combine(Sourcy.Git.RootDirectory.FullName, diff --git a/TUnit.Assertions.SourceGenerator.Tests/RunTestOptions.cs b/TUnit.Assertions.SourceGenerator.Tests/RunTestOptions.cs index ba7bbfa16e..cbc447a391 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/RunTestOptions.cs +++ b/TUnit.Assertions.SourceGenerator.Tests/RunTestOptions.cs @@ -8,4 +8,5 @@ public record RunTestOptions public Dictionary? BuildProperties { get; set; } public string[] AdditionalSyntaxes { get; set; } = []; public PackageIdentity[] AdditionalPackages { get; set; } = []; + public string[]? PreprocessorSymbols { get; set; } } diff --git a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet10_0.verified.txt index 0fe63fabf5..a255e48e2e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class StringBuilder_IsEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsEmpty_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class StringBuilder_IsEmpty_Assertion : Assertion public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsNotEmpty_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_HasExcessCapacity_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion value!.Length; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet8_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet8_0.verified.txt index 0fe63fabf5..a255e48e2e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet8_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet8_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class StringBuilder_IsEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsEmpty_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class StringBuilder_IsEmpty_Assertion : Assertion public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsNotEmpty_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_HasExcessCapacity_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion value!.Length; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet9_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet9_0.verified.txt index 0fe63fabf5..a255e48e2e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet9_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.DotNet9_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class StringBuilder_IsEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsEmpty_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class StringBuilder_IsEmpty_Assertion : Assertion public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsNotEmpty_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_HasExcessCapacity_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion value!.Length; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.Net4_7.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.Net4_7.verified.txt index 0fe63fabf5..a255e48e2e 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.Net4_7.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/StringBuilderAssertionGeneratorTests.GeneratesStringBuilderAssertions.Net4_7.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class StringBuilder_IsEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsEmpty_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class StringBuilder_IsEmpty_Assertion : Assertion public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_IsNotEmpty_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class StringBuilder_IsNotEmpty_Assertion : Assertion public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public StringBuilder_HasExcessCapacity_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class StringBuilder_HasExcessCapacity_Assertion : Assertion value!.Length; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() diff --git a/TUnit.Assertions.SourceGenerator.Tests/TestData/AssertionResultOfTMethodAssertion.cs b/TUnit.Assertions.SourceGenerator.Tests/TestData/AssertionResultOfTMethodAssertion.cs new file mode 100644 index 0000000000..04925b3796 --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/TestData/AssertionResultOfTMethodAssertion.cs @@ -0,0 +1,23 @@ +using TUnit.Assertions.Attributes; +using TUnit.Assertions.Core; + +namespace TUnit.Assertions.Tests.TestData; + +/// +/// Test case: AssertionResult<T>-returning method (terminal assertion) +/// Should generate Assertion class with GetAwaiter override that returns the result value +/// +public static partial class AssertionResultOfTMethodExtensions +{ + [GenerateAssertion(ExpectationMessage = "to contain '{needle}'")] + public static AssertionResult ContainsMatch(this IEnumerable strings, string needle) + { + var result = strings.FirstOrDefault(x => x.Contains(needle)); + if (result is not null) + { + return AssertionResult.Passed(result); + } + + return AssertionResult.Failed($"{needle} not found"); + } +} diff --git a/TUnit.Assertions.SourceGenerator.Tests/TestData/AsyncAssertionResultOfTAssertion.cs b/TUnit.Assertions.SourceGenerator.Tests/TestData/AsyncAssertionResultOfTAssertion.cs new file mode 100644 index 0000000000..6bc7986aef --- /dev/null +++ b/TUnit.Assertions.SourceGenerator.Tests/TestData/AsyncAssertionResultOfTAssertion.cs @@ -0,0 +1,23 @@ +using TUnit.Assertions.Attributes; +using TUnit.Assertions.Core; + +namespace TUnit.Assertions.Tests.TestData; + +/// +/// Test case: Task<AssertionResult<T>>-returning method (async terminal assertion) +/// Should generate async Assertion class with GetAwaiter override that returns the result value +/// +public static partial class AsyncAssertionResultOfTMethodExtensions +{ + [GenerateAssertion(ExpectationMessage = "to contain '{needle}'")] + public static Task> ContainsMatchAsync(this IEnumerable strings, string needle) + { + var result = strings.FirstOrDefault(x => x.Contains(needle)); + if (result is not null) + { + return Task.FromResult(AssertionResult.Passed(result)); + } + + return Task.FromResult>(AssertionResult.Failed($"{needle} not found")); + } +} diff --git a/TUnit.Assertions.SourceGenerator.Tests/TestData/RefStructParameterAssertion.cs b/TUnit.Assertions.SourceGenerator.Tests/TestData/RefStructParameterAssertion.cs index 6fa3559fa0..921459c41f 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/TestData/RefStructParameterAssertion.cs +++ b/TUnit.Assertions.SourceGenerator.Tests/TestData/RefStructParameterAssertion.cs @@ -15,10 +15,7 @@ public static class RefStructParameterAssertions /// [GenerateAssertion(ExpectationMessage = "to contain {message}", InlineMethodBody = true)] public static bool ContainsMessage(this string value, ref DefaultInterpolatedStringHandler message) - { - var stringMessage = message.ToStringAndClear(); - return value.Contains(stringMessage); - } + => value.Contains(message.ToStringAndClear()); /// /// Test with a simpler expression body diff --git a/TUnit.Assertions.SourceGenerator.Tests/TestsBase.cs b/TUnit.Assertions.SourceGenerator.Tests/TestsBase.cs index 10df29a364..415b0724b4 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/TestsBase.cs +++ b/TUnit.Assertions.SourceGenerator.Tests/TestsBase.cs @@ -103,10 +103,14 @@ ..await Task.WhenAll(runTestOptions.AdditionalFiles.Select(x => File.ReadAllText // To run generators, we can use an empty compilation. + var parseOptions = runTestOptions.PreprocessorSymbols is { Length: > 0 } + ? CSharpParseOptions.Default.WithPreprocessorSymbols(runTestOptions.PreprocessorSymbols) + : CSharpParseOptions.Default; + var compilation = CSharpCompilation.Create( GetType().Name, [ - CSharpSyntaxTree.ParseText(source) + CSharpSyntaxTree.ParseText(source, parseOptions) ], options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) ) diff --git a/TUnit.Assertions.SourceGenerator.Tests/TimeSpanAssertionGeneratorTests.GeneratesTimeSpanAssertions.DotNet10_0.verified.txt b/TUnit.Assertions.SourceGenerator.Tests/TimeSpanAssertionGeneratorTests.GeneratesTimeSpanAssertions.DotNet10_0.verified.txt index a86a3a97f2..325d69374a 100644 --- a/TUnit.Assertions.SourceGenerator.Tests/TimeSpanAssertionGeneratorTests.GeneratesTimeSpanAssertions.DotNet10_0.verified.txt +++ b/TUnit.Assertions.SourceGenerator.Tests/TimeSpanAssertionGeneratorTests.GeneratesTimeSpanAssertions.DotNet10_0.verified.txt @@ -14,6 +14,8 @@ namespace TUnit.Assertions.Extensions; /// public sealed class TimeSpan_IsZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsZero_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion } var result = value == global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion /// public sealed class TimeSpan_IsNotZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNotZero_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion } var result = value != global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion /// public sealed class TimeSpan_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion } var result = value > global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion /// public sealed class TimeSpan_IsNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNegative_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion } var result = value < global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -142,6 +150,8 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion /// public sealed class TimeSpan_IsNonNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonNegative_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion= global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -174,6 +184,8 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion public sealed class TimeSpan_IsNonPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonPositive_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class TimeSpan_IsNonPositive_Assertion : Assertion public sealed class TimeSpan_IsZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsZero_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion } var result = value == global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion /// public sealed class TimeSpan_IsNotZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNotZero_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion } var result = value != global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion /// public sealed class TimeSpan_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion } var result = value > global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion /// public sealed class TimeSpan_IsNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNegative_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion } var result = value < global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -142,6 +150,8 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion /// public sealed class TimeSpan_IsNonNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonNegative_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion= global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -174,6 +184,8 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion public sealed class TimeSpan_IsNonPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonPositive_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class TimeSpan_IsNonPositive_Assertion : Assertion public sealed class TimeSpan_IsZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsZero_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion } var result = value == global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion /// public sealed class TimeSpan_IsNotZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNotZero_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion } var result = value != global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion /// public sealed class TimeSpan_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion } var result = value > global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion /// public sealed class TimeSpan_IsNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNegative_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion } var result = value < global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -142,6 +150,8 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion /// public sealed class TimeSpan_IsNonNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonNegative_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion= global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -174,6 +184,8 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion public sealed class TimeSpan_IsNonPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonPositive_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class TimeSpan_IsNonPositive_Assertion : Assertion public sealed class TimeSpan_IsZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsZero_Assertion(AssertionContext context) : base(context) { @@ -30,9 +32,9 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion } var result = value == global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -46,6 +48,8 @@ public sealed class TimeSpan_IsZero_Assertion : Assertion /// public sealed class TimeSpan_IsNotZero_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNotZero_Assertion(AssertionContext context) : base(context) { @@ -62,9 +66,9 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion } var result = value != global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -78,6 +82,8 @@ public sealed class TimeSpan_IsNotZero_Assertion : Assertion /// public sealed class TimeSpan_IsPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsPositive_Assertion(AssertionContext context) : base(context) { @@ -94,9 +100,9 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion } var result = value > global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -110,6 +116,8 @@ public sealed class TimeSpan_IsPositive_Assertion : Assertion /// public sealed class TimeSpan_IsNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNegative_Assertion(AssertionContext context) : base(context) { @@ -126,9 +134,9 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion } var result = value < global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -142,6 +150,8 @@ public sealed class TimeSpan_IsNegative_Assertion : Assertion /// public sealed class TimeSpan_IsNonNegative_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonNegative_Assertion(AssertionContext context) : base(context) { @@ -158,9 +168,9 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion= global::System.TimeSpan.Zero; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -174,6 +184,8 @@ public sealed class TimeSpan_IsNonNegative_Assertion : Assertion public sealed class TimeSpan_IsNonPositive_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public TimeSpan_IsNonPositive_Assertion(AssertionContext context) : base(context) { @@ -190,9 +202,9 @@ public sealed class TimeSpan_IsNonPositive_Assertion : Assertion public sealed class Version_IsMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion } var result = value != null && value!.Minor == 0 && (value!.Build <= 0 || value!.Build == -1) && (value!.Revision <= 0 || value!.Revision == -1); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion /// public sealed class Version_IsNotMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsNotMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion 0 && value!.Build != -1) || (value!.Revision > 0 && value!.Revision != -1)); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion public sealed class Version_HasBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion } var result = value!.Build >= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion /// public sealed class Version_HasNoBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Version_HasNoBuildNumber_Assertion : Assertion public sealed class Version_HasRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion public sealed class Version_HasNoRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Version_HasNoRevisionNumber_Assertion : Assertion public sealed class Version_IsMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion } var result = value != null && value!.Minor == 0 && (value!.Build <= 0 || value!.Build == -1) && (value!.Revision <= 0 || value!.Revision == -1); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion /// public sealed class Version_IsNotMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsNotMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion 0 && value!.Build != -1) || (value!.Revision > 0 && value!.Revision != -1)); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion public sealed class Version_HasBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion } var result = value!.Build >= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion /// public sealed class Version_HasNoBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Version_HasNoBuildNumber_Assertion : Assertion public sealed class Version_HasRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion public sealed class Version_HasNoRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Version_HasNoRevisionNumber_Assertion : Assertion public sealed class Version_IsMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion } var result = value != null && value!.Minor == 0 && (value!.Build <= 0 || value!.Build == -1) && (value!.Revision <= 0 || value!.Revision == -1); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion /// public sealed class Version_IsNotMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsNotMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion 0 && value!.Build != -1) || (value!.Revision > 0 && value!.Revision != -1)); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion public sealed class Version_HasBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion } var result = value!.Build >= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion /// public sealed class Version_HasNoBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Version_HasNoBuildNumber_Assertion : Assertion public sealed class Version_HasRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion public sealed class Version_HasNoRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Version_HasNoRevisionNumber_Assertion : Assertion public sealed class Version_IsMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -35,9 +37,9 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion } var result = value != null && value!.Minor == 0 && (value!.Build <= 0 || value!.Build == -1) && (value!.Revision <= 0 || value!.Revision == -1); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -51,6 +53,8 @@ public sealed class Version_IsMajorVersion_Assertion : Assertion /// public sealed class Version_IsNotMajorVersion_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_IsNotMajorVersion_Assertion(AssertionContext context) : base(context) { @@ -72,9 +76,9 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion 0 && value!.Build != -1) || (value!.Revision > 0 && value!.Revision != -1)); - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -88,6 +92,8 @@ public sealed class Version_IsNotMajorVersion_Assertion : Assertion public sealed class Version_HasBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -109,9 +115,9 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion } var result = value!.Build >= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -125,6 +131,8 @@ public sealed class Version_HasBuildNumber_Assertion : Assertion /// public sealed class Version_HasNoBuildNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoBuildNumber_Assertion(AssertionContext context) : base(context) { @@ -146,9 +154,9 @@ public sealed class Version_HasNoBuildNumber_Assertion : Assertion public sealed class Version_HasRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -183,9 +193,9 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion= 0; - return Task.FromResult(result - ? AssertionResult.Passed - : AssertionResult.Failed($"found {value}")); + return result + ? _passedTask + : Task.FromResult(AssertionResult.Failed($"found {value}")); } protected override string GetExpectation() @@ -199,6 +209,8 @@ public sealed class Version_HasRevisionNumber_Assertion : Assertion public sealed class Version_HasNoRevisionNumber_Assertion : Assertion { + private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed); + public Version_HasNoRevisionNumber_Assertion(AssertionContext context) : base(context) { @@ -220,9 +232,9 @@ public sealed class Version_HasNoRevisionNumber_Assertion : Assertion, Task", + messageFormat: "Method '{0}' decorated with [GenerateAssertion] has unsupported return type '{1}'. Supported types are: bool, AssertionResult, AssertionResult, Task, Task, Task>", category: "TUnit.Assertions.SourceGenerator", defaultSeverity: DiagnosticSeverity.Error, isEnabledByDefault: true, @@ -465,18 +465,39 @@ public TypeQualifyingRewriter(SemanticModel semanticModel) return new ReturnTypeInfo(ReturnTypeKind.TaskBool); } - // Task + // Task (non-generic) if (innerType.Name == "AssertionResult" && - innerType.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core") + innerType.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core" && + innerType is INamedTypeSymbol { TypeArguments.Length: 0 }) { return new ReturnTypeInfo(ReturnTypeKind.TaskAssertionResult); } + + // Task> + if (innerType is INamedTypeSymbol innerNamed && + innerNamed.Name == "AssertionResult" && + innerNamed.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core" && + innerNamed.TypeArguments.Length == 1) + { + var resultType = innerNamed.TypeArguments[0].ToDisplayString(); + return new ReturnTypeInfo(ReturnTypeKind.TaskAssertionResultOfT, resultType); + } } } - // AssertionResult + // AssertionResult (generic) if (namedType.Name == "AssertionResult" && - namedType.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core") + namedType.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core" && + namedType.TypeArguments.Length == 1) + { + var resultType = namedType.TypeArguments[0].ToDisplayString(); + return new ReturnTypeInfo(ReturnTypeKind.AssertionResultOfT, resultType); + } + + // AssertionResult (non-generic) + if (namedType.Name == "AssertionResult" && + namedType.ContainingNamespace?.ToDisplayString() == "TUnit.Assertions.Core" && + namedType.TypeArguments.Length == 0) { return new ReturnTypeInfo(ReturnTypeKind.AssertionResult); } @@ -623,7 +644,15 @@ private static void GenerateAssertionClass(StringBuilder sb, AssertionMethodData sb.AppendLine($" private readonly {fieldType} _{param.Name};"); } - if (data.AdditionalParameters.Count > 0) + // For terminal assertions (AssertionResult), add field to capture the result value + var isTerminal = data.ReturnTypeInfo.Kind is ReturnTypeKind.AssertionResultOfT or ReturnTypeKind.TaskAssertionResultOfT; + if (isTerminal) + { + var resultType = data.ReturnTypeInfo.ResultTypeFullName!; + sb.AppendLine($" private {resultType}? _result;"); + } + + if (data.AdditionalParameters.Count > 0 || isTerminal) { sb.AppendLine(); } @@ -647,7 +676,7 @@ private static void GenerateAssertionClass(StringBuilder sb, AssertionMethodData sb.AppendLine(); // CheckAsync method - only async if we need await - var needsAsync = data.ReturnTypeInfo.Kind is ReturnTypeKind.TaskBool or ReturnTypeKind.TaskAssertionResult; + var needsAsync = data.ReturnTypeInfo.Kind is ReturnTypeKind.TaskBool or ReturnTypeKind.TaskAssertionResult or ReturnTypeKind.TaskAssertionResultOfT; var asyncKeyword = needsAsync ? "async " : ""; // Add suppression attributes to CheckAsync method when method body is inlined @@ -731,6 +760,23 @@ private static void GenerateAssertionClass(StringBuilder sb, AssertionMethodData sb.AppendLine(" }"); + // For terminal assertions, generate GetAwaiter override and helper method + if (isTerminal) + { + var resultType = data.ReturnTypeInfo.ResultTypeFullName!; + sb.AppendLine(); + sb.AppendLine($" public new System.Runtime.CompilerServices.TaskAwaiter<{resultType}> GetAwaiter()"); + sb.AppendLine(" {"); + sb.AppendLine(" return ExecuteAndReturnResultAsync().GetAwaiter();"); + sb.AppendLine(" }"); + sb.AppendLine(); + sb.AppendLine($" private async Task<{resultType}> ExecuteAndReturnResultAsync()"); + sb.AppendLine(" {"); + sb.AppendLine(" await AssertAsync();"); + sb.AppendLine(" return _result!;"); + sb.AppendLine(" }"); + } + sb.AppendLine("}"); } @@ -766,6 +812,28 @@ private static void GenerateMethodCall(StringBuilder sb, AssertionMethodData dat case ReturnTypeKind.TaskAssertionResult: sb.AppendLine($" return await {methodCall};"); break; + + case ReturnTypeKind.AssertionResultOfT: + sb.AppendLine($" var typedResult = {methodCall};"); + sb.AppendLine(" if (typedResult.IsPassed)"); + sb.AppendLine(" {"); + sb.AppendLine(" _result = typedResult.Value;"); + sb.AppendLine(" }"); + sb.AppendLine(" return Task.FromResult(typedResult.IsPassed"); + sb.AppendLine(" ? AssertionResult.Passed"); + sb.AppendLine(" : AssertionResult.Failed(typedResult.Message));"); + break; + + case ReturnTypeKind.TaskAssertionResultOfT: + sb.AppendLine($" var typedResult = await {methodCall};"); + sb.AppendLine(" if (typedResult.IsPassed)"); + sb.AppendLine(" {"); + sb.AppendLine(" _result = typedResult.Value;"); + sb.AppendLine(" }"); + sb.AppendLine(" return typedResult.IsPassed"); + sb.AppendLine(" ? AssertionResult.Passed"); + sb.AppendLine(" : AssertionResult.Failed(typedResult.Message);"); + break; } } @@ -1218,10 +1286,12 @@ private enum ReturnTypeKind Bool, AssertionResult, TaskBool, - TaskAssertionResult + TaskAssertionResult, + AssertionResultOfT, + TaskAssertionResultOfT } - private readonly record struct ReturnTypeInfo(ReturnTypeKind Kind); + private readonly record struct ReturnTypeInfo(ReturnTypeKind Kind, string? ResultTypeFullName = null); private record AssertionMethodData( MethodData Method, diff --git a/TUnit.Assertions/Attributes/GenerateAssertionAttribute.cs b/TUnit.Assertions/Attributes/GenerateAssertionAttribute.cs index fc65e0078e..d5f67be259 100644 --- a/TUnit.Assertions/Attributes/GenerateAssertionAttribute.cs +++ b/TUnit.Assertions/Attributes/GenerateAssertionAttribute.cs @@ -11,8 +11,10 @@ namespace TUnit.Assertions.Attributes; /// The decorated method must be static and return one of: /// - bool /// - AssertionResult +/// - AssertionResult<T> (terminal assertion — returns T when awaited) /// - Task<bool> /// - Task<AssertionResult> +/// - Task<AssertionResult<T>> (terminal assertion — returns T when awaited) /// /// /// The first parameter determines the target type (what becomes IAssertionSource<T>). @@ -72,6 +74,21 @@ namespace TUnit.Assertions.Attributes; /// await Assert.That(17).IsPrime(); /// /// +/// +/// +/// [GenerateAssertion(ExpectationMessage = "to contain message '{needle}'")] +/// public static AssertionResult<string> ContainsMessage(this IEnumerable<string> strings, string needle) +/// { +/// var result = strings.FirstOrDefault(x => x.Contains(needle)); +/// if (result is not null) +/// return AssertionResult<string>.Passed(result); +/// return AssertionResult.Failed($"{needle} not found"); +/// } +/// +/// // Usage (terminal assertion — returns the matched item): +/// string matched = await Assert.That(items).ContainsMessage("foo"); +/// +/// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] public sealed class GenerateAssertionAttribute : Attribute { diff --git a/TUnit.Assertions/Core/AssertionResult{T}.cs b/TUnit.Assertions/Core/AssertionResult{T}.cs new file mode 100644 index 0000000000..46be85158f --- /dev/null +++ b/TUnit.Assertions/Core/AssertionResult{T}.cs @@ -0,0 +1,44 @@ +namespace TUnit.Assertions.Core; + +/// +/// Represents the result of an assertion check that also carries a value when passed. +/// Used by [GenerateAssertion] methods that need to return a value to the caller +/// (terminal assertions). +/// +/// The type of value returned on success. +public readonly struct AssertionResult +{ + public bool IsPassed { get; } + public string Message { get; } + public T? Value { get; } + + private AssertionResult(bool isPassed, string message, T? value) + { + IsPassed = isPassed; + Message = message ?? string.Empty; + Value = value; + } + + /// + /// Creates a passing assertion result that carries a value. + /// + /// The value to carry with the passing result. + public static AssertionResult Passed(T value) => new(true, string.Empty, value); + + internal static AssertionResult Failed(string message) => new(false, message, default); + + /// + /// Allows implicit conversion from a non-generic (failure only). + /// Converting a passed without a value will throw. + /// + public static implicit operator AssertionResult(AssertionResult result) + { + if (result.IsPassed) + { + throw new InvalidOperationException( + "Cannot convert a passed AssertionResult to AssertionResult without a value. Use AssertionResult.Passed(value) instead."); + } + + return Failed(result.Message); + } +} diff --git a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet10_0.verified.txt b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet10_0.verified.txt index ff4bf732b3..becf3adaed 100644 --- a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet10_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet10_0.verified.txt @@ -2281,6 +2281,14 @@ namespace .Core public static . FailIf(bool condition, string message) { } public static . Failed(string message) { } } + public readonly struct AssertionResult + { + public bool IsPassed { get; } + public string Message { get; } + public T Value { get; } + public static . Passed(T value) { } + public static . op_Implicit(. result) { } + } public abstract class Assertion : . { protected readonly . Context; diff --git a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet8_0.verified.txt b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet8_0.verified.txt index 33099402b2..d3c4bae057 100644 --- a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet8_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet8_0.verified.txt @@ -2260,6 +2260,14 @@ namespace .Core public static . FailIf(bool condition, string message) { } public static . Failed(string message) { } } + public readonly struct AssertionResult + { + public bool IsPassed { get; } + public string Message { get; } + public T Value { get; } + public static . Passed(T value) { } + public static . op_Implicit(. result) { } + } public abstract class Assertion : . { protected readonly . Context; diff --git a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet9_0.verified.txt b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet9_0.verified.txt index d3912627c0..a47687f281 100644 --- a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet9_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.DotNet9_0.verified.txt @@ -2281,6 +2281,14 @@ namespace .Core public static . FailIf(bool condition, string message) { } public static . Failed(string message) { } } + public readonly struct AssertionResult + { + public bool IsPassed { get; } + public string Message { get; } + public T Value { get; } + public static . Passed(T value) { } + public static . op_Implicit(. result) { } + } public abstract class Assertion : . { protected readonly . Context; diff --git a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.Net4_7.verified.txt b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.Net4_7.verified.txt index a83aa18efc..a1fe4b0503 100644 --- a/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.Net4_7.verified.txt +++ b/TUnit.PublicAPI/Tests.Assertions_Library_Has_No_API_Changes.Net4_7.verified.txt @@ -2042,6 +2042,14 @@ namespace .Core public static . FailIf(bool condition, string message) { } public static . Failed(string message) { } } + public readonly struct AssertionResult + { + public bool IsPassed { get; } + public string Message { get; } + public T Value { get; } + public static . Passed(T value) { } + public static . op_Implicit(. result) { } + } public abstract class Assertion : . { protected readonly . Context;