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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
using Microsoft.CodeAnalysis.CSharp.Testing;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Testing;
using TUnit.Assertions;
using TUnit.Assertions.Analyzers.CodeFixers.Tests.Extensions;
using TUnit.Core;

namespace TUnit.Assertions.Analyzers.CodeFixers.Tests.Verifiers;

Expand Down Expand Up @@ -41,12 +43,19 @@ public static async Task VerifyAnalyzerAsync(
params DiagnosticResult[] expected
)
{
var referenceAssemblies = GetReferenceAssemblies();

// Only add xunit package for XUnitAssertionAnalyzer
if (typeof(TAnalyzer).Name == "XUnitAssertionAnalyzer")
{
referenceAssemblies = referenceAssemblies.AddPackages([new PackageIdentity("xunit.v3.assert", "3.2.0")]);
}

var test = new Test
{
TestCode = source.NormalizeLineEndings(),
CodeActionValidationMode = CodeActionValidationMode.SemanticStructure,
ReferenceAssemblies = GetReferenceAssemblies()
.AddPackages([new PackageIdentity("xunit.v3.assert", "2.0.0")]),
ReferenceAssemblies = referenceAssemblies,
TestState =
{
AdditionalReferences =
Expand Down Expand Up @@ -76,12 +85,19 @@ public static async Task VerifyCodeFixAsync(
[StringSyntax("c#-test")] string fixedSource
)
{
var referenceAssemblies = GetReferenceAssemblies();

// Only add xunit package for XUnitAssertionAnalyzer
if (typeof(TAnalyzer).Name == "XUnitAssertionAnalyzer")
{
referenceAssemblies = referenceAssemblies.AddPackages([new PackageIdentity("xunit.v3.assert", "3.2.0")]);
}

var test = new Test
{
TestCode = source.NormalizeLineEndings(),
FixedCode = fixedSource.NormalizeLineEndings(),
ReferenceAssemblies = GetReferenceAssemblies()
.AddPackages([new PackageIdentity("xunit.v3.assert", "2.0.0")]),
ReferenceAssemblies = referenceAssemblies,
TestState =
{
AdditionalReferences =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,4 +150,73 @@ public void MyTest()
"""
);
}

[Test]
public async Task Xunit_All_Converts_To_AssertMultiple_WithForeach()
{
await Verifier
.VerifyCodeFixAsync(
"""
using System.Threading.Tasks;

public class MyClass
{
public void MyTest()
{
var users = new[]
{
new User { Name = "Alice", Age = 25 },
new User { Name = "Bob", Age = 30 }
};

{|#0:Xunit.Assert.All(users, user =>
{
{|#1:Xunit.Assert.NotNull(user.Name)|};
{|#2:Xunit.Assert.True(user.Age > 18)|};
})|};
}
}

public class User
{
public string Name { get; init; }
public int Age { get; init; }
}
""",
[
Verifier.Diagnostic(Rules.XUnitAssertion).WithLocation(0),
Verifier.Diagnostic(Rules.XUnitAssertion).WithLocation(1),
Verifier.Diagnostic(Rules.XUnitAssertion).WithLocation(2)
],
"""
using System.Threading.Tasks;

public class MyClass
{
public async Task MyTest()
{
var users = new[]
{
new User { Name = "Alice", Age = 25 },
new User { Name = "Bob", Age = 30 }
};
using (Assert.Multiple())
{
foreach (var user in users)
{
await Assert.That(user.Name).IsNotNull();
await Assert.That(user.Age > 18).IsTrue();
}
}
}
}

public class User
{
public string Name { get; init; }
public int Age { get; init; }
}
"""
);
}
}
Loading
Loading