Skip to content

Commit

Permalink
Merge pull request #2988 from Evangelink/verifycs-test
Browse files Browse the repository at this point in the history
Update tests to stop relying on DiagnosticAnalyzerTestBase
  • Loading branch information
sharwell authored Nov 1, 2019
2 parents e70727e + fa917f1 commit af47226
Show file tree
Hide file tree
Showing 89 changed files with 5,399 additions and 5,143 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
private static readonly LocalizableString s_localizableMessageImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));
private static readonly LocalizableString s_localizableDescriptionImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));

private static readonly DiagnosticDescriptor s_implementIEquatableDescriptor = new DiagnosticDescriptor(
internal static readonly DiagnosticDescriptor ImplementIEquatableDescriptor = new DiagnosticDescriptor(
ImplementIEquatableRuleId,
s_localizableTitleImplementIEquatable,
s_localizableMessageImplementIEquatable,
Expand All @@ -33,7 +33,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
private static readonly LocalizableString s_localizableMessageOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));
private static readonly LocalizableString s_localizableDescriptionOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));

private static readonly DiagnosticDescriptor s_overridesObjectEqualsDescriptor = new DiagnosticDescriptor(
internal static readonly DiagnosticDescriptor OverridesObjectEqualsDescriptor = new DiagnosticDescriptor(
OverrideObjectEqualsRuleId,
s_localizableTitleOverridesObjectEquals,
s_localizableMessageOverridesObjectEquals,
Expand All @@ -43,7 +43,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
description: s_localizableDescriptionOverridesObjectEquals,
helpLinkUri: "http://go.microsoft.com/fwlink/?LinkId=734909");

public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(s_implementIEquatableDescriptor, s_overridesObjectEqualsDescriptor);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(ImplementIEquatableDescriptor, OverridesObjectEqualsDescriptor);

public override void Initialize(AnalysisContext context)
{
Expand Down Expand Up @@ -99,12 +99,12 @@ private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbo

if (overridesObjectEquals && !implementsEquatable && namedType.TypeKind == TypeKind.Struct)
{
context.ReportDiagnostic(namedType.CreateDiagnostic(s_implementIEquatableDescriptor, namedType));
context.ReportDiagnostic(namedType.CreateDiagnostic(ImplementIEquatableDescriptor, namedType));
}

if (!overridesObjectEquals && implementsEquatable)
{
context.ReportDiagnostic(namedType.CreateDiagnostic(s_overridesObjectEqualsDescriptor, namedType));
context.ReportDiagnostic(namedType.CreateDiagnostic(OverridesObjectEqualsDescriptor, namedType));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

using System.Globalization;
using Microsoft.CodeAnalysis.Diagnostics;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Testing;
using Test.Utilities;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeFixVerifier<
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer,
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsFixer>;
using VerifyVB = Test.Utilities.VisualBasicCodeFixVerifier<
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer,
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsFixer>;

namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.UnitTests
{
public partial class CA1012Tests : DiagnosticAnalyzerTestBase
public class CA1012Tests
{
protected override DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()
{
return new AbstractTypesShouldNotHaveConstructorsAnalyzer();
}

protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()
{
return new AbstractTypesShouldNotHaveConstructorsAnalyzer();
}

[Fact]
public void TestCSPublicAbstractClass()
public async Task TestCSPublicAbstractClass()
{
var code = @"
public abstract class C
Expand All @@ -31,23 +26,23 @@ public C()
}
}
";
VerifyCSharp(code, GetCA1012CSharpResultAt(2, 23, "C"));
await VerifyCS.VerifyAnalyzerAsync(code, GetCA1012CSharpResultAt(2, 23, "C"));
}

[Fact]
public void TestVBPublicAbstractClass()
public async Task TestVBPublicAbstractClass()
{
var code = @"
Public MustInherit Class C
Public Sub New()
End Sub
End Class
";
VerifyBasic(code, GetCA1012BasicResultAt(2, 26, "C"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(2, 26, "C"));
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestCSInternalAbstractClass()
public async Task TestCSInternalAbstractClass()
{
var code = @"
abstract class C
Expand All @@ -57,23 +52,23 @@ public C()
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestVBInternalAbstractClass()
public async Task TestVBInternalAbstractClass()
{
var code = @"
MustInherit Class C
Public Sub New()
End Sub
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestCSAbstractClassWithProtectedConstructor()
public async Task TestCSAbstractClassWithProtectedConstructor()
{
var code = @"
public abstract class C
Expand All @@ -83,23 +78,23 @@ protected C()
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestVBAbstractClassWithProtectedConstructor()
public async Task TestVBAbstractClassWithProtectedConstructor()
{
var code = @"
Public MustInherit Class C
Protected Sub New()
End Sub
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestCSNestedAbstractClassWithPublicConstructor1()
public async Task TestCSNestedAbstractClassWithPublicConstructor1()
{
var code = @"
public struct C
Expand All @@ -110,11 +105,11 @@ public D() { }
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestVBNestedAbstractClassWithPublicConstructor1()
public async Task TestVBNestedAbstractClassWithPublicConstructor1()
{
var code = @"
Public Structure C
Expand All @@ -124,11 +119,11 @@ End Sub
End Class
End Structure
";
VerifyBasic(code, GetCA1012BasicResultAt(3, 23, "D"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(3, 23, "D"));
}

[Fact]
public void TestNestedAbstractClassWithPublicConstructor2()
public async Task TestNestedAbstractClassWithPublicConstructor2()
{
var code = @"
public abstract class C
Expand All @@ -139,11 +134,11 @@ public D() { }
}
}
";
VerifyCSharp(code, GetCA1012CSharpResultAt(4, 27, "D"));
await VerifyCS.VerifyAnalyzerAsync(code, GetCA1012CSharpResultAt(4, 27, "D"));
}

[Fact]
public void TestVBNestedAbstractClassWithPublicConstructor2()
public async Task TestVBNestedAbstractClassWithPublicConstructor2()
{
var code = @"
Public MustInherit Class C
Expand All @@ -153,11 +148,11 @@ End Sub
End Class
End Class
";
VerifyBasic(code, GetCA1012BasicResultAt(3, 39, "D"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(3, 39, "D"));
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestNestedAbstractClassWithPublicConstructor3()
public async Task TestNestedAbstractClassWithPublicConstructor3()
{
var code = @"
internal abstract class C
Expand All @@ -168,11 +163,11 @@ public D() { }
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestVBNestedAbstractClassWithPublicConstructor3()
public async Task TestVBNestedAbstractClassWithPublicConstructor3()
{
var code = @"
MustInherit Class C
Expand All @@ -182,19 +177,17 @@ End Sub
End Class
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

internal static readonly string CA1012Message = MicrosoftCodeQualityAnalyzersResources.AbstractTypesShouldNotHaveConstructorsMessage;

private static DiagnosticResult GetCA1012CSharpResultAt(int line, int column, string objectName)
{
return GetCSharpResultAt(line, column, AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId, string.Format(CultureInfo.CurrentCulture, CA1012Message, objectName));
}
=> new DiagnosticResult(AbstractTypesShouldNotHaveConstructorsAnalyzer.Rule)
.WithLocation(line, column)
.WithArguments(objectName);

private static DiagnosticResult GetCA1012BasicResultAt(int line, int column, string objectName)
{
return GetBasicResultAt(line, column, AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId, string.Format(CultureInfo.CurrentCulture, CA1012Message, objectName));
}
=> new DiagnosticResult(AbstractTypesShouldNotHaveConstructorsAnalyzer.Rule)
.WithLocation(line, column)
.WithArguments(objectName);
}
}
Loading

0 comments on commit af47226

Please sign in to comment.