EncapsulateFieldCommandHandlerTests.vb 5.1 KB
Newer Older
S
Sam Harwell 已提交
1
' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.
2

3
Imports Microsoft.CodeAnalysis.Editor.Implementation.Interactive
4
Imports Microsoft.CodeAnalysis.Editor.Shared.Utilities
5 6 7
Imports Microsoft.CodeAnalysis.Editor.UnitTests
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.EncapsulateField
8
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests
9
Imports Microsoft.CodeAnalysis.Shared.TestHooks
10
Imports Microsoft.VisualStudio.Text.Editor.Commanding.Commands
11
Imports Microsoft.VisualStudio.Text.Operations
12 13

Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.EncapsulateField
14
    <[UseExportProvider]>
15
    Public Class EncapsulateFieldCommandHandlerTests
16
        <WpfFact, Trait(Traits.Feature, Traits.Features.EncapsulateField)>
C
CyrusNajmabadi 已提交
17
        Public Sub PrivateField()
18 19
            Dim text = <File>
Class C
20
    Private goo$$ As Integer
21 22

    Sub bar()
23
        goo = 3
24 25 26 27 28
    End Sub
End Class</File>.ConvertTestSourceTag()

            Dim expected = <File>
Class C
29
    Private goo As Integer
30

31
    Public Property Goo1 As Integer
32
        Get
33
            Return goo
34 35
        End Get
        Set(value As Integer)
36
            goo = value
37 38 39 40
        End Set
    End Property

    Sub bar()
41
        Goo1 = 3
42 43 44
    End Sub
End Class</File>.ConvertTestSourceTag()

C
CyrusNajmabadi 已提交
45
            Using state = EncapsulateFieldTestState.Create(text)
46 47
                state.AssertEncapsulateAs(expected)
            End Using
C
CyrusNajmabadi 已提交
48
        End Sub
49

50
        <WpfFact, Trait(Traits.Feature, Traits.Features.EncapsulateField)>
C
CyrusNajmabadi 已提交
51
        Public Sub NonPrivateField()
52 53
            Dim text = <File>
Class C
54
    Protected goo$$ As Integer
55 56

    Sub bar()
57
        goo = 3
58 59 60 61 62
    End Sub
End Class</File>.ConvertTestSourceTag()

            Dim expected = <File>
Class C
63
    Private _goo As Integer
64

65
    Protected Property Goo As Integer
66
        Get
67
            Return _goo
68 69
        End Get
        Set(value As Integer)
70
            _goo = value
71 72 73 74
        End Set
    End Property

    Sub bar()
75
        Goo = 3
76 77 78
    End Sub
End Class</File>.ConvertTestSourceTag()

C
CyrusNajmabadi 已提交
79
            Using state = EncapsulateFieldTestState.Create(text)
80 81
                state.AssertEncapsulateAs(expected)
            End Using
C
CyrusNajmabadi 已提交
82
        End Sub
83

J
Jared Parsons 已提交
84
        <WorkItem(1086632, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1086632")>
85
        <WpfFact, Trait(Traits.Feature, Traits.Features.EncapsulateField)>
C
CyrusNajmabadi 已提交
86
        Public Sub EncapsulateTwoFields()
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
            Dim text = "
Class Program
    [|Shared A As Integer = 1
    Shared B As Integer = A|]

    Sub Main(args As String())
        System.Console.WriteLine(A)
        System.Console.WriteLine(B)
    End Sub
End Class
"
            Dim expected = "
Class Program
    Shared A As Integer = 1
    Shared B As Integer = A1

    Public Shared Property A1 As Integer
        Get
            Return A
        End Get
        Set(value As Integer)
            A = value
        End Set
    End Property

    Public Shared Property B1 As Integer
        Get
            Return B
        End Get
        Set(value As Integer)
            B = value
        End Set
    End Property

    Sub Main(args As String())
        System.Console.WriteLine(A1)
        System.Console.WriteLine(B1)
    End Sub
End Class
"

C
CyrusNajmabadi 已提交
128
            Using state = EncapsulateFieldTestState.Create(text)
129 130
                state.AssertEncapsulateAs(expected)
            End Using
C
CyrusNajmabadi 已提交
131
        End Sub
132

K
Kevin Pilch-Bisson 已提交
133
        <WpfFact>
134 135
        <Trait(Traits.Feature, Traits.Features.EncapsulateField)>
        <Trait(Traits.Feature, Traits.Features.Interactive)>
C
CyrusNajmabadi 已提交
136
        Public Sub EncapsulateFieldCommandDisabledInSubmission()
137
            Dim exportProvider = ExportProviderCache _
G
Gen Lu 已提交
138
                .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveSupportsFeatureService.InteractiveTextBufferSupportsFeatureService))) _
139
                .CreateExportProvider()
140

C
CyrusNajmabadi 已提交
141
            Using workspace = TestWorkspace.Create(
142 143 144
                <Workspace>
                    <Submission Language="Visual Basic" CommonReferences="true">  
                        Class C
145
                            Private $goo As Object
146 147 148 149 150 151 152 153 154 155 156
                        End Class
                    </Submission>
                </Workspace>,
                workspaceKind:=WorkspaceKind.Interactive,
                exportProvider:=exportProvider)

                ' Force initialization.
                workspace.GetOpenDocumentIds().Select(Function(id) workspace.GetTestDocument(id).GetTextView()).ToList()

                Dim textView = workspace.Documents.Single().GetTextView()

157
                Dim handler = New EncapsulateFieldCommandHandler(
158
                    workspace.GetService(Of IThreadingContext),
159
                    workspace.GetService(Of ITextBufferUndoManagerProvider),
160
                    workspace.GetService(Of IAsynchronousOperationListenerProvider)())
161

162 163
                Dim state = handler.GetCommandState(New EncapsulateFieldCommandArgs(textView, textView.TextBuffer))
                Assert.True(state.IsUnspecified)
164
            End Using
C
CyrusNajmabadi 已提交
165
        End Sub
166 167
    End Class
End Namespace