/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/VisualBasicTest/SpellCheck/SpellCheckTests.vb
524 строки
14 KB
Cyrus Najmabadi
Organize VB imports
27 июн 2025, 21:53
27 июн 2025, 21:53
e9c47fd
Код
Авторство
О чём код?
' 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. Imports System.Collections.Immutable Imports Microsoft.CodeAnalysis.CodeActions Imports Microsoft.CodeAnalysis.CodeFixes Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.Editor.UnitTests.Extensions Imports Microsoft.CodeAnalysis.VisualBasic.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic.SpellCheck Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.Spellcheck <Trait(Traits.Feature, Traits.Features.CodeActionsSpellcheck)> Public Class SpellCheckTests Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest_NoEditor Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As (DiagnosticAnalyzer, CodeFixProvider) Return (Nothing, New VisualBasicSpellCheckCodeFixProvider()) End Function Protected Overrides Function MassageActions(actions As ImmutableArray(Of CodeAction)) As ImmutableArray(Of CodeAction) Return FlattenActions(actions) End Function <Fact> Public Async Function TestNoSpellcheckForIfOnly2Characters() As Task Dim text = <File>Class Goo Sub Bar() Dim a = new [|Fo|] End Sub End Class</File> Await TestMissingAsync(text) End Function <Fact> Public Async Function TestAfterNewExpression() As Task Dim text = <File>Class Goo Sub Bar() Dim a = new [|Gooa|].ToString() End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Gooa", "Goo")}) End Function <Fact> Public Async Function TestInAsClause() As Task Dim text = <File>Class Goo Sub Bar() Dim a as [|Goa|] End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Goa", "Goo")}) End Function <Fact> Public Async Function TestInSimpleAsClause() As Task Dim text = <File>Class Goo Sub Bar() Dim a as [|Goa|] End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Goa", "Goo")}) End Function <Fact> Public Async Function TestInFunc() As Task Dim text = <File>Class Goo Sub Bar(a as Func(Of [|Goa|])) End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Goa", "Goo")}) End Function <Fact> Public Async Function TestCorrectIdentifier() As Task Dim text = <File>Module Program Sub Main(args As String()) Dim zzz = 2 Dim y = 2 + [|zza|] End Sub End Module</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "zza", "zzz")}) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1065708")> Public Async Function TestInTypeOfIsExpression() As Task Dim text = <File>Imports System Public Class Class1 Sub F() If TypeOf x Is [|Boolea|] Then End If End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Boolea", "Boolean")}) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1065708")> Public Async Function TestInTypeOfIsNotExpression() As Task Dim text = <File>Imports System Public Class Class1 Sub F() If TypeOf x IsNot [|Boolea|] Then End If End Sub End Class</File> Await TestExactActionSetOfferedAsync(text.NormalizedValue, {String.Format(FeaturesResources.Change_0_to_1, "Boolea", "Boolean")}) End Function <Fact> Public Async Function TestInvokeCorrectIdentifier() As Task Dim text = <File>Module Program Sub Main(args As String()) Dim zzz = 2 Dim y = 2 + [|zza|] End Sub End Module</File> Dim expected = <File>Module Program Sub Main(args As String()) Dim zzz = 2 Dim y = 2 + zzz End Sub End Module</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestAfterDot() As Task Dim text = <File>Module Program Sub Main(args As String()) Program.[|Mair|] End Sub End Module</File> Dim expected = <File>Module Program Sub Main(args As String()) Program.Main End Sub End Module</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestNotInaccessibleProperty() As Task Dim text = <File>Module Program Sub Main(args As String()) Dim z = New c().[|membr|] End Sub End Module Class c Protected Property member As Integer Get Return 0 End Get End Property End Class</File> Await TestMissingAsync(text) End Function <Fact> Public Async Function TestGenericName1() As Task Dim text = <File>Class Goo(Of T) Dim x As [|Goo2(Of T)|] End Class</File> Dim expected = <File>Class Goo(Of T) Dim x As [|Goo(Of T)|] End Class</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestGenericName2() As Task Dim text = <File>Class Goo(Of T) Dim x As [|Goo2|] End Class</File> Dim expected = <File>Class Goo(Of T) Dim x As [|Goo|] End Class</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestQualifiedName1() As Task Dim text = <File>Module Program Dim x As New [|Goo2.Bar|] End Module Class Goo Class Bar End Class End Class</File> Dim expected = <File>Module Program Dim x As New Goo.Bar End Module Class Goo Class Bar End Class End Class</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestQualifiedName2() As Task Dim text = <File>Module Program Dim x As New [|Goo.Ba2|] End Module Class Goo Class Bar End Class End Class</File> Dim expected = <File>Module Program Dim x As New Goo.Bar End Module Class Goo Class Bar End Class End Class</File> Await TestAsync(text, expected) End Function <Fact> Public Async Function TestMiddleOfDottedExpression() As Task Dim text = <File>Module Program Sub Main(args As String()) Dim z = New c().[|membr|].ToString() End Sub End Module Class c Public Property member As Integer Get Return 0 End Get End Property End Class</File> Dim expected = <File>Module Program Sub Main(args As String()) Dim z = New c().member.ToString() End Sub End Module Class c Public Property member As Integer Get Return 0 End Get End Property End Class</File> Await TestAsync(text, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547161")> Public Async Function TestNotForOverloadResolutionFailure() As Task Dim text = <File>Module Program Sub Main(args As String()) End Sub Sub Goo() [|Method|]() End Sub Function Method(argument As Integer) As Integer Return 0 End Function End Module</File> Await TestMissingAsync(text) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547169")> Public Async Function TestHandlePredefinedTypeKeywordCorrectly() As Task Dim text = <File> Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim x as [|intege|] End Sub End Module</File> Dim expected = <File> Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim x as Integer End Sub End Module</File> Await TestActionCountAsync(text.ConvertTestSourceTag(), 2) Await TestAsync(text, expected, index:=0) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547166")> Public Async Function TestKeepEscapedIdentifiersEscaped() As Task Dim text = <File> Module Program Sub Main(args As String()) Dim q = From x In args [|[Taka]|]() End Sub Sub Take() End Sub End Module</File> Dim expected = <File> Module Program Sub Main(args As String()) Dim q = From x In args [Take]() End Sub Sub Take() End Sub End Module</File> Await TestAsync(text, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547166")> Public Async Function TestNoDuplicateCorrections() As Task Dim text = <File> Module Program Sub Main(args As String()) Dim q = From x In args [|[Taka]|]() End Sub Sub Take() End Sub End Module</File> Dim expected = <File> Module Program Sub Main(args As String()) Dim q = From x In args [Take]() End Sub Sub Take() End Sub End Module</File> Await TestActionCountAsync(text.ConvertTestSourceTag(), 1) Await TestAsync(text, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/5391")> Public Async Function TestSuggestEscapedPredefinedTypes() As Task Dim text = <File> Imports System Imports System.Collections.Generic Imports System.Linq Module Program Class [Integer] End Class Sub Main(args As String()) Dim x as [|intege|] End Sub End Module</File> Dim expected0 = <File> Imports System Imports System.Collections.Generic Imports System.Linq Module Program Class [Integer] End Class Sub Main(args As String()) Dim x as [Integer] End Sub End Module</File> Dim expected1 = <File> Imports System Imports System.Collections.Generic Imports System.Linq Module Program Class [Integer] End Class Sub Main(args As String()) Dim x as Integer End Sub End Module</File> Await TestActionCountAsync(text.ConvertTestSourceTag(), 3) Await TestAsync(text, expected0, index:=0) Await TestAsync(text, expected1, index:=1) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/775448")> Public Async Function TestShouldTriggerOnBC32045() As Task ' BC32045: 'A' has no type parameters and so cannot have type arguments. Dim text = <File> ' Import System.Collections to ensure we get BC32045 Imports System.Collections Interface Enumerable(Of T) End Interface Class C Sub Main(args As String()) Dim x as [|IEnumerable(Of Integer)|] End Sub End Class</File> Dim expected = <File> ' Import System.Collections to ensure we get BC32045 Imports System.Collections Interface Enumerable(Of T) End Interface Class C Sub Main(args As String()) Dim x as Enumerable(Of Integer) End Sub End Class</File> Await TestActionCountAsync(text.ConvertTestSourceTag(), 1) Await TestAsync(text, expected, index:=0) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/908322")> Public Async Function TestObjectConstruction() As Task Await TestInRegularAndScriptAsync( "Class AwesomeClass Sub M() Dim goo = New [|AwesomeClas()|] End Sub End Class", "Class AwesomeClass Sub M() Dim goo = New AwesomeClass() End Sub End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/6338")> Public Async Function TestTestMissingName() As Task Await TestMissingInRegularAndScriptAsync( "<Assembly: Microsoft.CodeAnalysis.[||]>") End Function <Fact> Public Async Function TestTrivia1() As Task Await TestInRegularAndScriptAsync( "Class AwesomeClass Sub M() Dim goo = New [|AwesomeClas|] ' trailing trivia End Sub End Class", "Class AwesomeClass Sub M() Dim goo = New AwesomeClass ' trailing trivia End Sub End Class") End Function Public Class AddImportTestsWithAddImportDiagnosticProvider Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest_NoEditor Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As (DiagnosticAnalyzer, CodeFixProvider) Return (New VisualBasicUnboundIdentifiersDiagnosticAnalyzer(), New VisualBasicSpellCheckCodeFixProvider()) End Function <Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSpellcheck)> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/829970")> Public Async Function TestIncompleteStatement() As Task Await TestInRegularAndScriptAsync( "Class AwesomeClass Inherits System.Attribute End Class Module Program <[|AwesomeClas|]> End Module", "Class AwesomeClass Inherits System.Attribute End Class Module Program <AwesomeClass> End Module") End Function End Class End Class End Namespace