File: SignatureHelp\CollectionInitializerSignatureHelpProviderTests.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.Editor.UnitTests.SignatureHelp
Imports Microsoft.CodeAnalysis.VisualBasic.SignatureHelp
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.SignatureHelp
    <Trait(Traits.Feature, Traits.Features.SignatureHelp)>
    Public Class CollectionInitializerSignatureHelpProviderTests
        Inherits AbstractVisualBasicSignatureHelpProviderTests
 
        Friend Overrides Function GetSignatureHelpProviderType() As Type
            Return GetType(CollectionInitializerSignatureHelpProvider)
        End Function
 
        <Fact>
        Public Async Function ForSingleParamAddMethods() As Task
            Dim markup = "
imports System.Collections.Generic
 
class C
    sub Goo()
        dim a = new List(of integer) from { { $$
    end sub
end class"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("List(Of Integer).Add(item As Integer)", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function ForMultiParamAddMethods() As Task
            Dim markup = "
imports System.Collections.Generic
 
class C
    sub Goo()
        dim a = new Dictionary(of integer, string) from { { $$
    end sub
end class"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("Dictionary(Of Integer, String).Add(key As Integer, value As String)", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function ForSecondParam() As Task
            Dim markup = "
imports System.Collections.Generic
 
class C
    sub Goo()
        dim a = new Dictionary(of integer, string) from { { 0, $$
    end sub
end class"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("Dictionary(Of Integer, String).Add(key As Integer, value As String)", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function WithoutClosingConstructs() As Task
            Dim markup = "
imports System.Collections.Generic
 
class C
    sub Goo()
        dim a = new Dictionary(of integer, string) from { { 0, $$
"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("Dictionary(Of Integer, String).Add(key As Integer, value As String)", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function WithMultipleAddMethods() As Task
            Dim markup = "
imports System.Collections
 
class Bar 
    implements IEnumerable
 
    public sub Add(i as integer)
    end sub
    public sub Add(i as integer, s as string)
    end sub
    public sub Add(i as integer, s as string, b as boolean)
    end sub
end class
 
class C
    sub Goo()
        dim as = new Bar from { { $$
"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("Bar.Add(i As Integer)", currentParameterIndex:=0))
            expectedOrderedItems.Add(New SignatureHelpTestItem("Bar.Add(i As Integer, s As String)", currentParameterIndex:=0, isSelected:=True))
            expectedOrderedItems.Add(New SignatureHelpTestItem("Bar.Add(i As Integer, s As String, b As Boolean)", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function DoesNotImplementIEnumerable() As Task
            Dim markup = "
imports System.Collections
 
class Bar
    public sub Add(i as integer)
    end sub
    public sub Add(i as integer, s as string)
    end sub
    public sub Add(i as integer, s as string, b as boolean)
    end sub
end class
 
class C
    sub Goo()
        dim as = new Bar from { { $$
"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function WithExtensionAddMethods() As Task
            Dim markup = "
imports System.Collections
 
class Bar
    implements IEnumerable
end class
 
module Extensions
    <System.Runtime.CompilerServices.Extension>
    public sub Add(b as bar, i as integer)
    end sub
    <System.Runtime.CompilerServices.Extension>
    public sub Add(b as bar, i as integer, s as string)
    end sub
    <System.Runtime.CompilerServices.Extension>
    public sub Add(b as bar, i as integer, s as string, b as boolean)
    end sub
end module
 
class C
    sub Goo()
        dim a = new Bar from { { $$
"
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem($"<{VBFeaturesResources.Extension}> Extensions.Add(i As Integer)", currentParameterIndex:=0))
            expectedOrderedItems.Add(New SignatureHelpTestItem($"<{VBFeaturesResources.Extension}> Extensions.Add(i As Integer, s As String)", currentParameterIndex:=0, isSelected:=True))
            expectedOrderedItems.Add(New SignatureHelpTestItem($"<{VBFeaturesResources.Extension}> Extensions.Add(i As Integer, s As String, b As Boolean)", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems, sourceCodeKind:=SourceCodeKind.Regular)
        End Function
    End Class
End Namespace