File: ApplyTraitToClassTests.cs
Web Access
Project: src\src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\UnitTests\Roslyn.Diagnostics.Analyzers.UnitTests.csproj (Roslyn.Diagnostics.Analyzers.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Threading.Tasks;
using Test.Utilities;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeRefactoringVerifier<
    Roslyn.Diagnostics.CSharp.Analyzers.CSharpApplyTraitToClass>;
using VerifyVB = Test.Utilities.VisualBasicCodeRefactoringVerifier<
    Roslyn.Diagnostics.VisualBasic.Analyzers.VisualBasicApplyTraitToClass>;
 
namespace Roslyn.Diagnostics.Analyzers.UnitTests
{
    public class ApplyTraitToClassTests
    {
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public Task MoveTraitToType_MovesSecond_CSharpAsync(string name, string value)
            => new VerifyCS.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = $$"""
                using Xunit;
 
                class C
                {
                    [$$Trait("{{name}}", "{{value}}")]
                    public void Method() { }
 
                    [Fact, Trait("{{name}}", "{{value}}")]
                    public void Method2() { }
                }
                """,
                FixedCode = $$"""
                using Xunit;
 
                [Trait("{{name}}", "{{value}}")]
                class C
                {
                    public void Method() { }
 
                    [Fact]
                    public void Method2() { }
                }
                """,
            }.RunAsync();
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public Task MoveTraitToType_MovesSecond_VisualBasicAsync(string name, string value)
            => new VerifyVB.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = $"""
                Imports Xunit
 
                Class C
                    <$$Trait("{name}", "{value}")>
                    Public Sub Method()
                    End Sub
 
                    <Fact, Trait("{name}", "{value}")>
                    Public Sub Method2()
                    End Sub
                End Class
                """,
                FixedCode = $"""
                Imports Xunit
 
                <Trait("{name}", "{value}")>
                Class C
                    Public Sub Method()
                    End Sub
 
                    <Fact>
                    Public Sub Method2()
                    End Sub
                End Class
                """,
            }.RunAsync();
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public Task MoveTraitToType_MovesOnlyFirst_CSharpAsync(string name, string value)
            => new VerifyCS.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = $$"""
                using Xunit;
 
                class C
                {
                    [$$Trait("", "")]
                    public void Method() { }
 
                    [Fact, Trait("{{name}}", "{{value}}")]
                    public void Method2() { }
                }
                """,
                FixedCode = $$"""
                using Xunit;
 
                [Trait("", "")]
                class C
                {
                    public void Method() { }
 
                    [Fact, Trait("{{name}}", "{{value}}")]
                    public void Method2() { }
                }
                """,
            }.RunAsync();
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public Task MoveTraitToType_MovesOnlyFirst_VisualBasicAsync(string name, string value)
            => new VerifyVB.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = $"""
                Imports Xunit
 
                Class C
                    <$$Trait("", "")>
                    Public Sub Method()
                    End Sub
 
                    <Fact, Trait("{name}", "{value}")>
                    Public Sub Method2()
                    End Sub
                End Class
                """,
                FixedCode = $"""
                Imports Xunit
 
                <Trait("", "")>
                Class C
                    Public Sub Method()
                    End Sub
 
                    <Fact, Trait("{name}", "{value}")>
                    Public Sub Method2()
                    End Sub
                End Class
                """,
            }.RunAsync();
    }
}