public override async Task ReportsNoDiagnosticsForSuppressedMember_WhenSuppressingMembersFromEntireGenericType(string method) { Settings = AnalyzersSettings.CreateWithSuppressions("T:MyNamespace.Foo`1", NonVirtualSetupSpecificationDescriptor.Id); var source = $@"using NSubstitute; namespace MyNamespace {{ public class Foo<T> {{ public int Bar {{ get; set; }} public int this[int x] => 0; public int FooBar() {{ return 1; }} }} public class FooBarBar<T> {{ public int Bar {{ get;set; }} public int this[int x] => 0; public int FooBar() {{ return 1; }} }} public class FooTests {{ public void Test() {{ var substitute = NSubstitute.Substitute.For<Foo<int>>(); substitute[1].{method}(1); substitute.Bar.{method}(1); substitute.FooBar().{method}(1); var substituteFooBarBar = NSubstitute.Substitute.For<FooBarBar<int>>(); [|substituteFooBarBar[1]|].{method}(1); [|substituteFooBarBar.Bar|].{method}(1); [|substituteFooBarBar.FooBar()|].{method}(1); }} }} }}"; var textParserResult = TextParser.GetSpans(source); var diagnosticMessages = new[] { "Member this[] can not be intercepted. Only interface members and virtual, overriding, and abstract members can be intercepted.", "Member Bar can not be intercepted. Only interface members and virtual, overriding, and abstract members can be intercepted.", "Member FooBar can not be intercepted. Only interface members and virtual, overriding, and abstract members can be intercepted." }; var diagnostics = textParserResult.Spans.Select((span, idx) => CreateDiagnostic(NonVirtualSetupSpecificationDescriptor.OverrideMessage(diagnosticMessages[idx]), span.Span, span.LineSpan)).ToArray(); await VerifyDiagnostic(textParserResult.Text, diagnostics); }
public override async Task ReportsNoDiagnosticsForSuppressedMember_WhenSuppressingMembersFromEntireNamespace(string method) { Settings = AnalyzersSettings.CreateWithSuppressions("N:MyNamespace", DiagnosticIdentifiers.NonVirtualSetupSpecification); var source = $@"Imports NSubstitute Imports MyOtherNamespace Namespace MyOtherNamespace Public Class FooBarBar Public Property Bar As Integer Default Public ReadOnly Property Item(ByVal x As Integer) As Integer Get Return 0 End Get End Property Public Function FooBar() As Integer Return 1 End Function End Class End Namespace Namespace MyNamespace Public Class Foo Public Property Bar As Integer Default Public ReadOnly Property Item(ByVal x As Integer) As Integer Get Return 0 End Get End Property Public Function FooBar() As Integer Return 1 End Function End Class Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() substitute(1).{method}(1) substitute.Bar.{method}(1) substitute.FooBar().{method}(1) Dim substituteFooBarBar = NSubstitute.Substitute.[For](Of FooBarBar)() [|substituteFooBarBar(1)|].{method}(1) [|substituteFooBarBar.Bar|].{method}(1) [|substituteFooBarBar.FooBar()|].{method}(1) End Sub End Class End Namespace "; var textParserResult = TextParser.GetSpans(source); var diagnosticMessages = new[] { "Member Item can not be intercepted. Only interface members and overrideable, overriding, and must override members can be intercepted.", "Member Bar can not be intercepted. Only interface members and overrideable, overriding, and must override members can be intercepted.", "Member FooBar can not be intercepted. Only interface members and overrideable, overriding, and must override members can be intercepted." }; var diagnostics = textParserResult.Spans.Select((span, idx) => CreateDiagnostic(NonVirtualSetupSpecificationDescriptor.OverrideMessage(diagnosticMessages[idx]), span)).ToArray(); await VerifyDiagnostic(textParserResult.Text, diagnostics); }