File: Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\MarkAssembliesWithClsCompliantTests.cs
Web Access
Project: ..\..\..\src\Microsoft.CodeAnalysis.NetAnalyzers\tests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests.csproj (Microsoft.CodeAnalysis.NetAnalyzers.UnitTests)
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.
 
using System.Threading.Tasks;
using Test.Utilities;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeFixVerifier<
    Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.MarkAssembliesWithAttributesDiagnosticAnalyzer,
    Microsoft.CodeQuality.CSharp.Analyzers.ApiDesignGuidelines.CSharpMarkAssembliesWithClsCompliantFixer>;
using VerifyVB = Test.Utilities.VisualBasicCodeFixVerifier<
    Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.MarkAssembliesWithAttributesDiagnosticAnalyzer,
    Microsoft.CodeQuality.VisualBasic.Analyzers.ApiDesignGuidelines.BasicMarkAssembliesWithClsCompliantFixer>;
 
namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.UnitTests
{
    public class MarkAssembliesWithCLSCompliantAttributeTests
    {
        [Fact]
        public async Task CA1014CA1016BasicTestWithCLSCompliantAttributeNoneAsync()
        {
            await VerifyVB.VerifyAnalyzerAsync(
@"
imports System.Reflection
 
    class Program
    
        Sub Main
        End Sub
    End class
",
            VerifyVB.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1016Rule), VerifyVB.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1014Rule));
        }
 
        [Fact]
        public async Task CA1014BasicTestWithNoVersionAttributeAsync()
        {
            await VerifyVB.VerifyAnalyzerAsync(
@"
imports System.Reflection
 
< Assembly: AssemblyVersionAttribute(""1.1.3.4"")>
    class Program
 
        Sub Main
        End Sub
    End class
",
                VerifyVB.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1014Rule));
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithComplianceAttributeNotFromBCLAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
 
[assembly:CLSCompliant(true)]
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
class CLSCompliantAttribute : Attribute {
    public CLSCompliantAttribute(bool s) {}
}
",
                VerifyCS.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1014Rule));
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithNoCLSComplianceAttributeAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
 
class Program
{
    static void Main(string[] args)
    {
    }
}
",
                VerifyCS.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1014Rule));
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithCLSCompliantAttributeAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
 
[assembly:CLSCompliantAttribute(true)]
class Program
{
    static void Main(string[] args)
    {
    }
}
");
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithTwoFilesWithAttributeAsync()
        {
            await new VerifyCS.Test
            {
                TestState =
                {
                    Sources =
                    {
@"
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
 
class Program
{
    static void Main(string[] args)
    {
    }
}
",
@"
using System;
[assembly:CLSCompliantAttribute(true)]
"
                    }
                }
            }.RunAsync();
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithCLSCompliantAttributeTruncatedAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
 
[assembly:CLSCompliant(true)]
class Program
{
    static void Main(string[] args)
    {
    }
}
");
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithCLSCompliantAttributeFullyQualifiedAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System.Reflection;
[assembly:AssemblyVersionAttribute(""1.2.3.4"")]
[assembly:System.CLSCompliantAttribute(true)]
class Program
{
    static void Main(string[] args)
    {
    }
}
");
        }
 
        [Fact]
        public async Task CA1014CSharpTestWithCLSCompliantAttributeNoneAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"
using System.Reflection;
class Program
{
    static void Main(string[] args)
    {
    }
}
",
            VerifyCS.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1016Rule), VerifyCS.Diagnostic(MarkAssembliesWithAttributesDiagnosticAnalyzer.CA1014Rule));
        }
 
        [Fact, WorkItem(2143, "https://github.com/dotnet/roslyn-analyzers/issues/2143")]
        public async Task CA1014CSharpTestWithRazorCompiledItemAttributeAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(
@"using System;
 
[assembly:Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute((Type)null, null, null)]
 
namespace Microsoft.AspNetCore.Razor.Hosting
{
    public class RazorCompiledItemAttribute : Attribute
    {
        public RazorCompiledItemAttribute(Type type, string kind, string identifier)
        {
        }
    }
}
 
public class C
{
}
");
        }
    }
}