| File: MakeExeTypesInternalTests.cs | Web Access |
| Project: src\test\Analyzers\Microsoft.Analyzers.Extra.Tests\Microsoft.Analyzers.Extra.Tests.csproj (Microsoft.Analyzers.Extra.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeFixes; using Xunit; namespace Microsoft.Extensions.ExtraAnalyzers.Test; public static class MakeExeTypesInternalTests { [Fact] public static async Task Basic() { const string Source = @" namespace Example { public static class /*0+*/Program/*-0*/ { public static void Main() { } } public class /*1+*/Test/*-1*/ { } internal class Test2 { public class Test3 { } internal class Test4 { } } }"; const string ExpectedFixedSource = @" namespace Example { internal static class /*0+*/Program/*-0*/ { public static void Main() { } } internal class /*1+*/Test/*-1*/ { } internal class Test2 { public class Test3 { } internal class Test4 { } } }"; var actualFixedSources = await RoslynTestUtils.RunAnalyzerAndFixer( new MakeExeTypesInternalAnalyzer(), new MakeExeTypesInternalFixer(), null, new[] { Source }, asExecutable: true); Assert.Equal(ExpectedFixedSource.Replace("\r\n", "\n", StringComparison.Ordinal), actualFixedSources[0]); } [Fact] public static async Task Disqualification() { const string Source = @" #pragma warning disable EA0004 namespace Xunit { public sealed class FactAttribute : System.Attribute {} public sealed class TheoryAttribute : System.Attribute {} } namespace Microsoft.AspNetCore.Mvc { public sealed class HttpGetAttribute : System.Attribute {} public abstract class ControllerBase { } } namespace BenchmarkDotNet.Attributes { public sealed class BenchmarkAttribute : System.Attribute {} } namespace MessagePack { [System.AttributeUsage(System.AttributeTargets.Class)] public sealed class MessagePackObjectAttribute : System.Attribute {} } #pragma warning restore EA0004 namespace Example { using Xunit; using Microsoft.AspNetCore.Mvc; using BenchmarkDotNet.Attributes; using MessagePack; public static class /*0+*/Program/*-0*/ { public static void Main() { } } public class Test1 { [Fact] public void M() {} } public class Test2 { [Theory] public void M() {} } public class Test3 { [Benchmark] public void M() {} } public class Test4 { [HttpGet] public void M() {} } public class Test5 : ControllerBase { } [MessagePackObject] public class Test6 { } }"; var d = await RoslynTestUtils.RunAnalyzer( new MakeExeTypesInternalAnalyzer(), null, new[] { Source }, asExecutable: true); Assert.Single(d); for (int i = 0; i < d.Count; i++) { Source.AssertDiagnostic(i, DiagDescriptors.MakeExeTypesInternal, d[i]); } } [Fact] public static void UtilityMethods() { var f = new MakeExeTypesInternalFixer(); Assert.Single(f.FixableDiagnosticIds); Assert.Equal(DiagDescriptors.MakeExeTypesInternal.Id, f.FixableDiagnosticIds[0]); Assert.Equal(WellKnownFixAllProviders.BatchFixer, f.GetFixAllProvider()); } }