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 async Task MoveTraitToType_MovesSecond_CSharpAsync(string name, string value)
        {
            var source = $@"
using Xunit;
 
class C
{{
    [$$Trait(""{name}"", ""{value}"")]
    public void Method() {{ }}
 
    [Fact, Trait(""{name}"", ""{value}"")]
    public void Method2() {{ }}
}}
";
            var fixedSource = $@"
using Xunit;
 
[Trait(""{name}"", ""{value}"")]
class C
{{
    public void Method() {{ }}
 
    [Fact]
    public void Method2() {{ }}
}}
";
 
            await new VerifyCS.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = source,
                FixedCode = fixedSource,
            }.RunAsync();
        }
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public async Task MoveTraitToType_MovesSecond_VisualBasicAsync(string name, string value)
        {
            var source = $@"
Imports Xunit
 
Class C
    <$$Trait(""{name}"", ""{value}"")>
    Public Sub Method()
    End Sub
 
    <Fact, Trait(""{name}"", ""{value}"")>
    Public Sub Method2()
    End Sub
End Class
";
            var fixedSource = $@"
Imports Xunit
 
<Trait(""{name}"", ""{value}"")>
Class C
    Public Sub Method()
    End Sub
 
    <Fact>
    Public Sub Method2()
    End Sub
End Class
";
 
            await new VerifyVB.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = source,
                FixedCode = fixedSource,
            }.RunAsync();
        }
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public async Task MoveTraitToType_MovesOnlyFirst_CSharpAsync(string name, string value)
        {
            var source = $@"
using Xunit;
 
class C
{{
    [$$Trait("""", """")]
    public void Method() {{ }}
 
    [Fact, Trait(""{name}"", ""{value}"")]
    public void Method2() {{ }}
}}
";
            var fixedSource = $@"
using Xunit;
 
[Trait("""", """")]
class C
{{
    public void Method() {{ }}
 
    [Fact, Trait(""{name}"", ""{value}"")]
    public void Method2() {{ }}
}}
";
 
            await new VerifyCS.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = source,
                FixedCode = fixedSource,
            }.RunAsync();
        }
 
        [Theory]
        [InlineData("A", "")]
        [InlineData("", "A")]
        [InlineData("A", "A")]
        public async Task MoveTraitToType_MovesOnlyFirst_VisualBasicAsync(string name, string value)
        {
            var source = $@"
Imports Xunit
 
Class C
    <$$Trait("""", """")>
    Public Sub Method()
    End Sub
 
    <Fact, Trait(""{name}"", ""{value}"")>
    Public Sub Method2()
    End Sub
End Class
";
            var fixedSource = $@"
Imports Xunit
 
<Trait("""", """")>
Class C
    Public Sub Method()
    End Sub
 
    <Fact, Trait(""{name}"", ""{value}"")>
    Public Sub Method2()
    End Sub
End Class
";
 
            await new VerifyVB.Test
            {
                ReferenceAssemblies = AdditionalMetadataReferences.DefaultWithXUnit,
                TestCode = source,
                FixedCode = fixedSource,
            }.RunAsync();
        }
    }
}