File: Completion\CompletionProviders\PartialTypeCompletionProviderTests.vb
Web Access
Project: ..\..\..\src\EditorFeatures\VisualBasicTest\Microsoft.CodeAnalysis.VisualBasic.EditorFeatures.UnitTests.vbproj (Microsoft.CodeAnalysis.VisualBasic.EditorFeatures.UnitTests)
' 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 Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Completion.CompletionProviders
    <Trait(Traits.Feature, Traits.Features.Completion)>
    Public Class PartialTypeCompletionProviderTests
        Inherits AbstractVisualBasicCompletionProviderTests
 
        Friend Overrides Function GetCompletionProviderType() As Type
            Return GetType(PartialTypeCompletionProvider)
        End Function
 
        <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/578224")>
        Public Async Function TestRecommendTypesWithoutPartial() As Task
            Dim text = <text>Class C
End Class
 
Partial Class $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "C")
        End Function
 
        <Fact>
        Public Async Function TestPartialClass1() As Task
            Dim text = <text>Partial Class C
End Class
 
Partial Class $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "C")
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClass1() As Task
            Dim text = <text>Class Bar
End Class
                           
Partial Class C(Of Bar)
End Class
 
Partial Class $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "C(Of Bar)")
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClassCommitOnParen() As Task
            Dim text = <text>Class Bar
End Class
                           
Partial Class C(Of Bar)
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Class Bar
End Class
                           
Partial Class C(Of Bar)
End Class
 
Partial Class C(</text>
 
            Await VerifyProviderCommitAsync(text.Value, "C(Of Bar)", expected.Value, "("c, SourceCodeKind.Regular)
        End Function
 
        <Fact(Skip:="https://github.com/dotnet/roslyn/issues/11569")>
        Public Async Function TestPartialClassWithSameMemberName() As Task
            Dim text = <text>Partial Class C(Of T)
    Sub C()
    End Sub
End Class
 
Partial Class $$C(Of T)
End Class</text>
 
            Await VerifyItemExistsAsync(text.Value, "C(Of T)")
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClassCommitOnTab() As Task
            Dim text = <text>Class Bar
End Class
                           
Partial Class C(Of Bar)
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Class Bar
End Class
                           
Partial Class C(Of Bar)
End Class
 
Partial Class C(Of Bar)</text>
 
            Await VerifyProviderCommitAsync(text.Value, "C(Of Bar)", expected.Value, Nothing, SourceCodeKind.Regular)
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClassCommitOnSpace() As Task
            Dim text = <text>Partial Class C(Of T)
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Partial Class C(Of T)
End Class
 
Partial Class C(Of T) </text>
 
            Await VerifyProviderCommitAsync(text.Value, "C(Of T)", expected.Value, " "c, SourceCodeKind.Regular)
        End Function
 
        <Fact>
        Public Async Function TestPartialClassWithModifiers() As Task
            Dim text = <text>Partial Class C
End Class
 
Partial Friend Class $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "C")
        End Function
 
        <Fact>
        Public Async Function TestPartialStruct() As Task
            Dim text = <text>Partial Structure S
End Structure
 
Partial Structure $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "S")
        End Function
 
        <Fact>
        Public Async Function TestPartialInterface() As Task
            Dim text = <text>Partial Interface I
End Interface
 
Partial Interface $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "I")
        End Function
 
        <Fact>
        Public Async Function TestPartialModule() As Task
            Dim text = <text>Partial Module M
End Module
 
Partial Module $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "M")
        End Function
 
        <Fact>
        Public Async Function TestTypeKindMatches1() As Task
            Dim text = <text>Partial Structure S
End Structure
 
Partial Class $$</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestTypeKindMatches2() As Task
            Dim text = <text>Partial Class C
End Class
 
Partial Structure $$</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestPartialClassesInSameNamespace() As Task
            Dim text = <text>Namespace N
    Partial Class Goo
 
    End Class
End Namespace
 
Namespace N
    Partial Class $$
 
End Namespace</text>
 
            Await VerifyItemExistsAsync(text.Value, "Goo")
        End Function
 
        <Fact>
        Public Async Function TestNotPartialClassesAcrossDifferentNamespaces() As Task
            Dim text = <text>Namespace N
    Partial Class Goo
 
    End Class
End Namespace
 
Partial Class $$</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestNotPartialClassesInOuterNamespaces() As Task
            Dim text = <text>Partial Class C
 
End Class
 
Namespace N
    Partial Class $$
End Namespace
</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestNotPartialClassesInOuterClass() As Task
            Dim text = <text>Partial Class C
    Partial Class $$
End Class
</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestIncludeConstraints() As Task
            Dim text = <text>
Partial Class C1(Of T As Exception)
 
End Class
 
Partial Class $$</text>
 
            Await VerifyItemExistsAsync(text.Value, "C1(Of T As Exception)")
        End Function
 
        <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/578122")>
        Public Async Function TestDoNotSuggestCurrentMember() As Task
            Dim text = <text>
Partial Class F$$
                       </text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestNotInTrivia() As Task
            Dim text = <text>
Partial Class C1
 
End Class
 
Partial Class '$$</text>
 
            Await VerifyNoItemsExistAsync(text.Value)
        End Function
 
        <Fact>
        Public Async Function TestPartialClassWithReservedName() As Task
            Dim text = <text>Partial Class [Class]
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Partial Class [Class]
End Class
 
Partial Class [Class]</text>
 
            Await VerifyProviderCommitAsync(text.Value, "Class", expected.Value, Nothing, SourceCodeKind.Regular)
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClassWithReservedName() As Task
            Dim text = <text>Partial Class [Class](Of T)
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Partial Class [Class](Of T)
End Class
 
Partial Class [Class](Of T)</text>
 
            Await VerifyProviderCommitAsync(text.Value, "Class(Of T)", expected.Value, Nothing, SourceCodeKind.Regular)
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericClassWithReservedNameCommittedWithParen() As Task
            Dim text = <text>Partial Class [Class](Of T)
End Class
 
Partial Class $$</text>
 
            Dim expected = <text>Partial Class [Class](Of T)
End Class
 
Partial Class [Class](</text>
 
            Await VerifyProviderCommitAsync(text.Value, "Class(Of T)", expected.Value, "("c, SourceCodeKind.Regular)
        End Function
 
        <Fact>
        Public Async Function TestPartialGenericInterfaceWithVariance() As Task
            Dim text = <text>Partial Interface G(Of Out T)
End Interface
 
Partial Interface $$</text>
 
            Dim expected = <text>Partial Interface G(Of Out T)
End Interface
 
Partial Interface G(Of Out T)</text>
 
            Await VerifyProviderCommitAsync(text.Value, "G(Of Out T)", expected.Value, Nothing, SourceCodeKind.Regular)
        End Function
 
    End Class
End Namespace