/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.MethodNameGeneration.vb
210 строк
6 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. Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ExtractMethod Partial Public Class ExtractMethodTests <[UseExportProvider]> <Trait(Traits.Feature, Traits.Features.ExtractMethod)> Public Class MethodNameGeneration <Fact> Public Async Function TestGetLiteralGeneratesSmartName() As Task Dim code = <text>Public Class Class1 Sub MySub() Dim a As Integer = [|10|] End Sub End Class</text> Dim expected = <text>Public Class Class1 Sub MySub() Dim a As Integer = GetA() End Sub Private Shared Function GetA() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestGetLiteralDoesNotGenerateSmartName() As Task Dim code = <text>Public Class Class1 Sub MySub() Dim a As Integer = [|10|] + 42 End Sub End Class</text> Dim expected = <text>Public Class Class1 Sub MySub() Dim a As Integer = NewMethod() + 42 End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestGetLiteralGeneratesSmartName2() As Task Dim code = <text>Public Class Class1 Sub MySub() Dim b As Integer = 5 Dim a As Integer = 10 + [|b|] End Sub End Class</text> Dim expected = <text>Public Class Class1 Sub MySub() Dim b As Integer = 5 Dim a As Integer = 10 + GetB(b) End Sub Private Shared Function GetB(b As Integer) As Integer Return b End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestAppendingNumberedSuffixToGetMethods() As Task Dim code = <text>Class A Function Test1() As Integer Dim x As Integer = GetX() Console.Write([|x|]) Return x End Function Private Shared Function GetX() As Integer Return 5 End Function End Class</text> Dim expected = <text>Class A Function Test1() As Integer Dim x As Integer = GetX() Console.Write(GetX1(x)) Return x End Function Private Shared Function GetX1(x As Integer) As Integer Return x End Function Private Shared Function GetX() As Integer Return 5 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestAppendingNumberedSuffixToNewMethods() As Task Dim code = <text>Class A Function Test1() As Integer Dim x As Integer = 5 [|Console.Write(5)|] Return x End Function Private Shared Sub NewMethod() End Sub End Class</text> Dim expected = <text>Class A Function Test1() As Integer Dim x As Integer = 5 NewMethod1() Return x End Function Private Shared Sub NewMethod1() Console.Write(5) End Sub Private Shared Sub NewMethod() End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function ''' This is a special case in VB as it is case insensitive ''' Hence Get_FirstName() would conflict with the internal get_FirstName() that VB generates for the getter <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540483")> Public Async Function TestPropertyGetter() As Task Dim code = <text>Class Program Private _FirstName As String Property FirstName() As String Get Dim name As String name = [|_FirstName|] Return name End Get Set(ByVal value As String) _FirstName = value End Set End Property End Class</text> Dim expected = <text>Class Program Private _FirstName As String Property FirstName() As String Get Dim name As String name = GetFirstName() Return name End Get Set(ByVal value As String) _FirstName = value End Set End Property Private Function GetFirstName() As String Return _FirstName End Function End Class</text> ' changed test due to implicit function variable bug in VB Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530674")> Public Async Function TestEscapedParameterName() As Task Dim code = <text>Imports System.Linq Module Program Sub Goo() Dim x = From [char] In "" Select [|[char]|] ' Extract method End Sub End Module</text> Dim expected = <text>Imports System.Linq Module Program Sub Goo() Dim x = From [char] In "" Select GetChar([char]) ' Extract method End Sub Private Function GetChar([char] As Char) As Char Return [char] End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function End Class End Class End Namespace