File: ChangeSignature\ChangeSignature_CheckAllSignatureChanges.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.ChangeSignature
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Extensions
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ChangeSignature
    <Trait(Traits.Feature, Traits.Features.ChangeSignature)>
    Partial Public Class ChangeSignatureTests
        Inherits AbstractChangeSignatureTests
 
        <Theory>
        <MemberData(NameOf(AbstractChangeSignatureTests.GetAllSignatureSpecificationsForTheory), New Integer() {1, 3, 2, 0}, MemberType:=GetType(AbstractChangeSignatureTests))>
        Public Async Function TestAllSignatureChanges_1This_3Regular_2Default(totalParameters As Integer, signature As Integer()) As Task
            Dim markup = <Text><![CDATA[
Option Strict On

Module Program
    ''' <summary>
    ''' See <see cref="M(String, Integer, String, Boolean, Integer, String)"/>
    ''' </summary>
    ''' <param name="o">o!</param>
    ''' <param name="a">a!</param>
    ''' <param name="b">b!</param>
    ''' <param name="c">c!</param>
    ''' <param name="x">x!</param>
    ''' <param name="y">y!</param>
    <System.Runtime.CompilerServices.Extension>
    Sub $$M(ByVal o As String, a As Integer, b As String, c As Boolean, Optional x As Integer = 0, Optional y As String = "Zero")
        Dim t = "Test"

        M(t, 1, "Two", True, 3, "Four")
        t.M(1, "Two", True, 3, "Four")

        M(t, 1, "Two", True, 3)
        M(t, 1, "Two", True)

        M(t, 1, "Two", True, 3, y:="Four")
        M(t, 1, "Two", c:=True)

        M(t, 1, "Two", True, y:="Four")
        M(t, 1, "Two", True, x:=3)

        M(t, 1, "Two", True, y:="Four", x:=3)
        M(t, 1, y:="Four", x:=3, b:="Two", c:=True)
        M(t, y:="Four", x:=3, c:=True, b:="Two", a:=1)
        M(y:="Four", x:=3, c:=True, b:="Two", a:=1, o:=t)
    End Sub
End Module
]]></Text>.NormalizedValue()
 
            Await TestChangeSignatureViaCommandAsync(
                LanguageNames.VisualBasic,
                markup,
                expectedSuccess:=True,
                updatedSignature:=signature,
                totalParameters:=totalParameters,
                verifyNoDiagnostics:=True)
        End Function
 
        <Theory>
        <MemberData(NameOf(AbstractChangeSignatureTests.GetAllSignatureSpecificationsForTheory), New Integer() {1, 3, 0, 1}, MemberType:=GetType(AbstractChangeSignatureTests))>
        Public Async Function TestAllSignatureChanges_1This_3Regular_1ParamArray(totalParameters As Integer, signature As Integer()) As Task
            Dim markup = <Text><![CDATA[
Option Strict On

Module Program
    <System.Runtime.CompilerServices.Extension>
    Sub $$M(ByVal o As String, a As Integer, b As Boolean, c As Integer, ParamArray p As Integer())
        Dim t = "Test"

        M(t, 1, True, 3, {4, 5})
        t.M(1, True, 3, {4, 5})

        M(t, 1, True, 3, 4, 5)
        t.M(1, True, 3, 4, 5)

        M(t, 1, True, 3)
        t.M(1, True, 3)
    End Sub
End Module
]]></Text>.NormalizedValue()
 
            Await TestChangeSignatureViaCommandAsync(
                LanguageNames.VisualBasic,
                markup,
                expectedSuccess:=True,
                updatedSignature:=signature,
                totalParameters:=totalParameters,
                verifyNoDiagnostics:=True)
        End Function
 
        <Theory>
        <MemberData(NameOf(AbstractChangeSignatureTests.GetAllSignatureSpecificationsForTheory), New Integer() {0, 3, 0, 0}, MemberType:=GetType(AbstractChangeSignatureTests))>
        Public Async Function TestAllSignatureChanges_Delegate_3(totalParameters As Integer, signature As Integer()) As Task
            Dim markup = <Text><![CDATA[
Option Strict On

Class C
    ''' <summary>
    ''' <see cref="MyDelegate.Invoke(Integer, String, Boolean)"/>
    ''' <see cref="MyDelegate.BeginInvoke(Integer, String, Boolean, AsyncCallback, Object)"/>
    ''' </summary>
    ''' <param name="x"></param>
    ''' <param name="y"></param>
    ''' <param name="z"></param>
    Delegate Sub $$MyDelegate(x As Integer, y As String, z As Boolean)

    Event MyEvent As MyDelegate
    Custom Event MyEvent2 As MyDelegate
        AddHandler(value As MyDelegate)
        End AddHandler
        RemoveHandler(value As MyDelegate)
        End RemoveHandler
        RaiseEvent(x As Integer, y As String, z As Boolean)
        End RaiseEvent
    End Event

    Sub M()
        RaiseEvent MyEvent(1, "Two", True)
        RaiseEvent MyEvent2(1, "Two", True)
        AddHandler MyEvent, AddressOf MyEventHandler
        AddHandler MyEvent2, AddressOf MyEventHandler2

        Dim x As MyDelegate = Nothing
        x(1, "Two", True)
        x.Invoke(1, "Two", True)
        x.BeginInvoke(1, "Two", True, Nothing, New Object())
    End Sub

    ''' <param name="a"></param>
    ''' <param name="b"></param>
    ''' <param name="c"></param>
    Sub MyEventHandler(a As Integer, b As String, c As Boolean)
    End Sub

    Sub MyEventHandlerEmpty()
    End Sub

    Sub MyEventHandler2(a As Integer, b As String, c As Boolean)
    End Sub

    Sub MyEventHandler2Empty()
    End Sub

    Sub MyOtherEventHandler(a As Integer, b As String, c As Boolean) Handles Me.MyEvent
    End Sub

    Sub MyOtherEventHandler2(a As Integer, b As String, c As Boolean) Handles Me.MyEvent2
    End Sub
End Class
]]></Text>.NormalizedValue()
 
            Await TestChangeSignatureViaCommandAsync(
                LanguageNames.VisualBasic,
                markup,
                expectedSuccess:=True,
                updatedSignature:=signature,
                totalParameters:=totalParameters,
                verifyNoDiagnostics:=True)
        End Function
    End Class
End Namespace