EncapsulateFieldCommandHandlerTests.vb 5.0 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 4 5 6
Imports Microsoft.CodeAnalysis.Editor.Implementation.Interactive
Imports Microsoft.CodeAnalysis.Editor.UnitTests
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.EncapsulateField
7
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests
8
Imports Microsoft.CodeAnalysis.Shared.TestHooks
9
Imports Microsoft.VisualStudio.Text.Editor.Commanding.Commands
10
Imports Microsoft.VisualStudio.Text.Operations
11 12

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

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

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

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

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

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

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

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

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

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

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

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

J
Jared Parsons 已提交
83
        <WorkItem(1086632, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1086632")>
84
        <WpfFact, Trait(Traits.Feature, Traits.Features.EncapsulateField)>
C
CyrusNajmabadi 已提交
85
        Public Sub EncapsulateTwoFields()
86 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
            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 已提交
127
            Using state = EncapsulateFieldTestState.Create(text)
128 129
                state.AssertEncapsulateAs(expected)
            End Using
C
CyrusNajmabadi 已提交
130
        End Sub
131

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

C
CyrusNajmabadi 已提交
140
            Using workspace = TestWorkspace.Create(
141 142 143
                <Workspace>
                    <Submission Language="Visual Basic" CommonReferences="true">  
                        Class C
144
                            Private $goo As Object
145 146 147 148 149 150 151 152 153 154 155
                        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()

156
                Dim handler = New EncapsulateFieldCommandHandler(workspace.GetService(Of ITextBufferUndoManagerProvider),
157
                                                                 workspace.ExportProvider.GetExportedValue(Of IAsynchronousOperationListenerProvider)())
158 159
                Dim state = handler.GetCommandState(New EncapsulateFieldCommandArgs(textView, textView.TextBuffer))
                Assert.True(state.IsUnspecified)
160
            End Using
C
CyrusNajmabadi 已提交
161
        End Sub
162 163
    End Class
End Namespace