|
' 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
Imports Microsoft.CodeAnalysis.Completion
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Completion.CompletionProviders
Imports Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Namespace Tests
<Trait(Traits.Feature, Traits.Features.Completion)>
Public Class OverrideCompletionProviderTests
Inherits AbstractVisualBasicCompletionProviderTests
Friend Overrides Function GetCompletionProviderType() As Type
Return GetType(OverrideCompletionProvider)
End Function
#Region "CompletionItem tests"
<WpfFact>
Public Async Function TestNotOfferedBaseClassMember() As Task
Dim text = <a>MustInherit Class Base
Public MustOverride Sub Goo()
End Class
Class Derived
Inherits Base
Public Overrides Sub Goo()
End Sub
End Class
Class SomeClass
Inherits Derived
Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "Goo()", "Sub Base.Goo()")
End Function
<WpfFact>
Public Async Function TestIntermediateClassOverriddenMember() As Task
Dim text = <a>MustInherit Class Base
Public MustOverride Sub Goo()
End Class
Class Derived
Inherits Base
Public Overrides Sub Goo()
End Sub
End Class
Class SomeClass
Inherits Derived
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "Goo()", "Sub Derived.Goo()")
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543807")>
<WpfFact>
Public Async Function TestHideFinalize() As Task
Dim text = <a>Class goo
Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "Finalize()")
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543807")>
<WpfFact>
Public Async Function TestShowShadowingFinalize() As Task
Dim text = <a>Class goo
Overridable Shadows Sub Finalize()
End Sub
End Class
Class bar
Inherits goo
overrides $$
End class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo.Finalize()")
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543806")>
<WpfFact>
Public Async Function TestShowObjectOverrides() As Task
Dim text = <a>Class goo
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "Equals(obj As Object)")
Await VerifyItemExistsAsync(text.Value, "ToString()")
Await VerifyItemExistsAsync(text.Value, "GetHashCode()")
End Function
<WpfFact>
Public Async Function TestInheritedOverridableSub() As Task
Dim text = <a>Public Class a
Public Overridable Sub goo()
End Sub
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestInheritedOverridableFunction() As Task
Dim text = <a>Public Class a
Public Overridable Function goo() As Integer
Return 0
End Function
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestInheritedMustOverrideFunction() As Task
Dim text = <a>Public Class a
Public MustOverride Sub goo()
End Sub
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestMatchSub() As Task
Dim text = <a>Public Class a
Public Overridable Sub goo()
End Sub
Public Overridable Function bar() As Integer
Return 0
End Function
End Class
Public Class b
Inherits a
Overrides Sub $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo()")
Await VerifyItemIsAbsentAsync(text.Value, "bar()")
End Function
<WpfFact>
Public Async Function TestMatchFunction() As Task
Dim text = <a>Public Class a
Public Overridable Sub goo()
End Sub
Public Overridable Function bar() As Integer
Return 0
End Function
End Class
Public Class b
Inherits a
Overrides Function $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "bar()")
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestDontFilterIfNothingMatchesReturnTypeVoidness() As Task
Dim text = <a>MustInherit Class Base
MustOverride Function Goo() As String
Protected NotOverridable Overrides Sub Finalize()
MyBase.Finalize()
End Sub
End Class
Class Derived
Inherits Base
Overrides Sub $$
End Class</a>
' Show Goo() even though it's a Function
Await VerifyItemExistsAsync(text.Value, "Goo()")
End Function
<WpfFact>
Public Async Function TestNotAlreadyImplemented() As Task
Dim text = <a>Public Class a
Public Overridable Sub goo()
End Sub
End Class
Public Class b
Inherits a
Public Overrides Sub goo()
MyBase.goo()
End Sub
Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestNotShowNotInheritable() As Task
Dim text = <a>Public Class a
Public NotInheritable Sub goo()
End Sub
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestNotShowNotOverridable() As Task
Dim text = <a>Public Class a
Public Sub goo()
End Sub
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestNotIfTextAfterPosition() As Task
Dim text = <a>Public Class a
Public Overridable Function goo() As Integer
Return 0
End Function
End Class
Public Class b
Inherits a
Overrides $$ Function
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestNotIfDeclaringShared() As Task
Dim text = <a>Public Class a
Public Overridable Function goo() As Integer
Return 0
End Function
End Class
Public Class b
Inherits a
Shared Overrides $$
End Class</a>
Await VerifyItemIsAbsentAsync(text.Value, "goo()")
End Function
<WpfFact>
Public Async Function TestSuggestProperty() As Task
Dim text = <a>Public Class a
Public Overridable Property goo As String
End Class
Public Class b
Inherits a
Public Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo")
End Function
<WpfFact>
Public Async Function TestShowAllAccessibilitiesIfNoneTyped() As Task
Dim text = <a>Public Class a
Public Overridable Sub r1()
End Sub
Private Overridable Sub s1()
End Sub
Protected Overridable Sub t1()
End Sub
Friend Overridable Sub u1()
End Sub
End Class
Public Class b
Inherits a
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "r1()")
Await VerifyItemExistsAsync(text.Value, "t1()")
Await VerifyItemExistsAsync(text.Value, "u1()")
Await VerifyItemIsAbsentAsync(text.Value, "s1()")
End Function
<WpfFact>
Public Async Function TestFilterPublic() As Task
Dim text = <a>Public Class a
Public Overridable Sub r1()
End Sub
Private Overridable Sub s1()
End Sub
Protected Overridable Sub t1()
End Sub
Friend Overridable Sub u1()
End Sub
End Class
Public Class b
Inherits a
Public Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "r1()")
Await VerifyItemIsAbsentAsync(text.Value, "s1()")
Await VerifyItemIsAbsentAsync(text.Value, "t1()")
Await VerifyItemIsAbsentAsync(text.Value, "u1()")
End Function
<WpfFact>
Public Async Function TestFilterProtected() As Task
Dim text = <a>Public Class a
Public Overridable Sub r1()
End Sub
Private Overridable Sub s1()
End Sub
Protected Overridable Sub t1()
End Sub
Friend Overridable Sub u1()
End Sub
End Class
Public Class b
Inherits a
Protected Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "t1()")
Await VerifyItemIsAbsentAsync(text.Value, "r1()")
Await VerifyItemIsAbsentAsync(text.Value, "s1()")
Await VerifyItemIsAbsentAsync(text.Value, "u1()")
End Function
<WpfFact>
Public Async Function TestFilterFriend() As Task
Dim text = <a>Public Class a
Public Overridable Sub r1()
End Sub
Private Overridable Sub s1()
End Sub
Protected Overridable Sub t1()
End Sub
Friend Overridable Sub u1()
End Sub
End Class
Public Class b
Inherits a
Friend Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "u1()")
Await VerifyItemIsAbsentAsync(text.Value, "r1()")
Await VerifyItemIsAbsentAsync(text.Value, "s1()")
Await VerifyItemIsAbsentAsync(text.Value, "t1()")
End Function
<WpfFact>
Public Async Function TestFilterProtectedFriend() As Task
Dim text = <a>Public Class a
Public Overridable Sub r1()
End Sub
Private Overridable Sub s1()
End Sub
Protected Overridable Sub t1()
End Sub
Friend Overridable Sub u1()
End Sub
Protected Friend Overridable Sub v1()
End Sub
End Class
Public Class b
Inherits a
Protected Friend Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "v1()")
Await VerifyItemIsAbsentAsync(text.Value, "u1()")
Await VerifyItemIsAbsentAsync(text.Value, "r1()")
Await VerifyItemIsAbsentAsync(text.Value, "s1()")
Await VerifyItemIsAbsentAsync(text.Value, "t1()")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForGenericInDerivedClass1() As Task
Dim markup = <a>Public MustInherit Class Base(Of T)
Public MustOverride Sub Goo(t As T)
End Class
Public Class SomeClass(Of X)
Inherits Base(Of X)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As X)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T)")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForGenericInDerivedClass2() As Task
Dim markup = <a>Public MustInherit Class Base(Of T)
Public MustOverride Sub Goo(t As T)
End Class
Public Class SomeClass(Of X, Y, Z)
Inherits Base(Of Y)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As Y)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T)")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForGenericInDerivedClass3() As Task
Dim markup = <a>Public MustInherit Class Base(Of T, S)
Public MustOverride Sub Goo(t As T, s As S)
End Class
Public Class SomeClass(Of X, Y, Z)
Inherits Base(Of Y, Z)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As Y, s As Z)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T, s As S)")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForNonGenericInDerivedClass1() As Task
Dim markup = <a>Public MustInherit Class Base(Of T)
Public MustOverride Sub Goo(t As T)
End Class
Public Class SomeClass
Inherits Base(Of Integer)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As Integer)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T)")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForNonGenericInDerivedClass2() As Task
Dim markup = <a>Public MustInherit Class Base(Of T)
Public MustOverride Sub Goo(t As T)
End Class
Public Class SomeClass(Of X, Y, Z)
Inherits Base(Of Integer)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As Integer)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T)")
End Function
<WpfFact>
Public Async Function TestGenericTypeNameSubstitutedForNonGenericInDerivedClass3() As Task
Dim markup = <a>Imports System
Public MustInherit Class Base(Of T, S)
Public MustOverride Sub Goo(t As T, s As S)
End Class
Public Class SomeClass
Inherits Base(Of Integer, Exception)
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo(t As Integer, s As Exception)")
Await VerifyItemIsAbsentAsync(markup.Value, "Goo(t As T, s As S)")
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529714")>
<WpfFact>
Public Async Function TestGenericMethodTypeParametersNotRenamed() As Task
Dim text = <a>Class CGoo
Overridable Function Something(Of X)(arg As X) As X
End Function
End Class
Class Derived(Of X)
Inherits CGoo
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "Something(Of X)(arg As X)")
End Function
<WpfFact>
Public Async Function TestParameterTypeSimplified() As Task
Dim text = <a>Imports System
Class CBase
Public Overridable Sub goo(e As System.Exception)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "goo(e As Exception)")
End Function
<WpfFact>
Public Async Function TestEscapedMethodNameInIntelliSenseList() As Task
Dim markup = <a>Class CBase
Public Overridable Sub [Class]()
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>.Value
Dim code As String = Nothing
Dim position As Integer
MarkupTestFile.GetPosition(markup.NormalizeLineEndings(), code, position)
Await BaseVerifyWorkerAsync(code, position, "[Class]()", "Sub CBase.Class()", SourceCodeKind.Regular, False, False, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
End Function
<WpfFact>
Public Async Function TestEscapedPropertyNameInIntelliSenseList() As Task
Dim markup = <a>Class CBase
Public Overridable Property [Class] As Integer
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>.Value
Dim code As String = Nothing
Dim position As Integer
MarkupTestFile.GetPosition(markup.NormalizeLineEndings(), code, position)
Await BaseVerifyWorkerAsync(
code, position, "[Class]", "Property CBase.Class As Integer",
SourceCodeKind.Regular, False, False, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
End Function
<WpfFact>
Public Async Function TestEscapedParameterNameInIntelliSenseList() As Task
Dim markup = <a>Class CBase
Public Overridable Sub Goo([Integer] As Integer)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(markup.Value, "Goo([Integer] As Integer)", "Sub CBase.Goo([Integer] As Integer)")
End Function
<WpfFact>
Public Async Function TestHideKeywords() As Task
Dim text = <a>
Class Program
Overrides $$
End Class</a>
Await VerifyItemExistsAsync(text.Value, "ToString()")
Await VerifyItemIsAbsentAsync(text.Value, "Function")
End Function
#End Region
#Region "Commit tests"
<WpfFact>
Public Async Function TestCommitInEmptyClass() As Task
Dim markupBeforeCommit = <a>Class c
Overrides $$
End Class</a>
Dim expectedCode = <a>Class c
Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode()$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "GetHashCode()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitSubBeforeSub() As Task
Dim markupBeforeCommit = <a>Class c
Overrides $$
Sub bar()
End Sub
End Class</a>
Dim expectedCode = <a>Class c
Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode()$$
End Function
Sub bar()
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "GetHashCode()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitSubAfterSub() As Task
Dim markupBeforeCommit = <a>Class c
Sub bar()
End Sub
Overrides $$
End Class</a>
Dim expectedCode = <a>Class c
Sub bar()
End Sub
Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode()$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "GetHashCode()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitFunction() As Task
Dim markupBeforeCommit = <a>Public Class c
Public Overridable Function goo() As Integer
Return 0
End Function
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Public Overridable Function goo() As Integer
Return 0
End Function
End Class
Public Class d
Inherits c
Public Overrides Function goo() As Integer
Return MyBase.goo()$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitFunctionWithParams() As Task
Dim markupBeforeCommit = <a>Public Class c
Public Overridable Function goo(x As Integer) As Integer
Return x
End Function
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Public Overridable Function goo(x As Integer) As Integer
Return x
End Function
End Class
Public Class d
Inherits c
Public Overrides Function goo(x As Integer) As Integer
Return MyBase.goo(x)$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(x As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitSubWithParams() As Task
Dim markupBeforeCommit = <a>Public Class c
Public Overridable Sub goo(x As Integer)
End Sub
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Public Overridable Sub goo(x As Integer)
End Sub
End Class
Public Class d
Inherits c
Public Overrides Sub goo(x As Integer)
MyBase.goo(x)$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(x As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitProtected() As Task
Dim markupBeforeCommit = <a>Public Class c
Protected Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Protected Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Protected Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitFriend() As Task
Dim markupBeforeCommit = <a>Public Class c
Friend Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Friend Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Friend Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitProtectedFriend() As Task
Dim markupBeforeCommit = <a>Public Class c
Protected Friend Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Protected Friend Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Protected Friend Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitAbstractThrows() As Task
Dim markupBeforeCommit = <a>Imports System
Public MustInherit Class c
Public MustOverride Sub goo()
End Class
Public Class d
Inherits c
Overrides $$
End Class</a>
Dim expectedCode = <a>Imports System
Public MustInherit Class c
Public MustOverride Sub goo()
End Class
Public Class d
Inherits c
Public Overrides Sub goo()
Throw New NotImplementedException()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitRetainMustOverride() As Task
Dim markupBeforeCommit = <a>Public Class c
Public Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
MustOverride Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Public Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Public MustOverride Overrides Sub goo()$$
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitRetainNotOverridable() As Task
Dim markupBeforeCommit = <a>Public Class c
Public Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
NotOverridable Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class c
Public Overridable Sub goo()
End Sub
End Class
Public Class d
Inherits c
Public NotOverridable Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitProperty() As Task
Dim markupBeforeCommit = <a>Public Class base
Public Overridable Property goo As String
End Class
Public Class derived
Inherits base
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class base
Public Overridable Property goo As String
End Class
Public Class derived
Inherits base
Public Overrides Property goo As String
Get
Return MyBase.goo$$
End Get
Set(value As String)
MyBase.goo = value
End Set
End Property
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitWriteOnlyProperty() As Task
Dim markupBeforeCommit = <a>Public Class base
Public Overridable WriteOnly Property goo As String
Set(value As String)
End Set
End Property
End Class
Class derived
Inherits base
Public Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class base
Public Overridable WriteOnly Property goo As String
Set(value As String)
End Set
End Property
End Class
Class derived
Inherits base
Public Overrides WriteOnly Property goo As String
Set(value As String)
MyBase.goo = value$$
End Set
End Property
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitReadOnlyProperty() As Task
Dim markupBeforeCommit = <a>Public Class base
Public Overridable ReadOnly Property goo As String
Get
End Get
End Property
End Class
Class derived
Inherits base
Public Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class base
Public Overridable ReadOnly Property goo As String
Get
End Get
End Property
End Class
Class derived
Inherits base
Public Overrides ReadOnly Property goo As String
Get
Return MyBase.goo$$
End Get
End Property
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitPropertyInaccessibleParameterAttributesAreNotGenerated() As Task
Dim markupBeforeCommit = <a><![CDATA[Imports System
Public Class Class1
Private Class MyPrivate
Inherits Attribute
End Class
Public Class MyPublic
Inherits Attribute
End Class
Default Public Overridable Property Item(<MyPrivate, MyPublic> i As Integer) As Integer
Get
Return 0
End Get
Set(value As Integer)
End Set
End Property
End Class
Public Class Class2
Inherits Class1
Public Overrides Property $$
End Class]]></a>
Dim expectedCode = <a><![CDATA[Imports System
Public Class Class1
Private Class MyPrivate
Inherits Attribute
End Class
Public Class MyPublic
Inherits Attribute
End Class
Default Public Overridable Property Item(<MyPrivate, MyPublic> i As Integer) As Integer
Get
Return 0
End Get
Set(value As Integer)
End Set
End Property
End Class
Public Class Class2
Inherits Class1
Default Public Overrides Property Item(<MyPublic> i As Integer) As Integer
Get
Return MyBase.Item(i)$$
End Get
Set(value As Integer)
MyBase.Item(i) = value
End Set
End Property
End Class]]></a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Item(i As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543937")>
<WpfFact>
Public Async Function TestCommitOptionalKeywordAndParameterValuesAreGenerated() As Task
Dim markupBeforeCommit = <a><![CDATA[Class CBase
Public Overridable Sub goo(Optional x As Integer = 42)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class]]></a>
Dim expectedCode = <a><![CDATA[Class CBase
Public Overridable Sub goo(Optional x As Integer = 42)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo(Optional x As Integer = 42)
MyBase.goo(x)$$
End Sub
End Class]]></a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(x As Integer = 42)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitAttributesAreNotGenerated() As Task
Dim markupBeforeCommit = <a><![CDATA[Imports System
Class CBase
<Obsolete()>
Public Overridable Sub goo()
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class]]></a>
Dim expectedCode = <a><![CDATA[Imports System
Class CBase
<Obsolete()>
Public Overridable Sub goo()
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class]]></a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function CommitInaccessibleParameterAttributesAreNotGenerated() As Task
Dim markupBeforeCommit = <a><![CDATA[Imports System
Public Class Class1
Private Class MyPrivate
Inherits Attribute
End Class
Public Class MyPublic
Inherits Attribute
End Class
Public Overridable Sub M(<MyPrivate, MyPublic> i As Integer)
End Sub
End Class
Public Class Class2
Inherits Class1
Public Overrides Sub $$
End Class]]></a>
Dim expectedCode = <a><![CDATA[Imports System
Public Class Class1
Private Class MyPrivate
Inherits Attribute
End Class
Public Class MyPublic
Inherits Attribute
End Class
Public Overridable Sub M(<MyPrivate, MyPublic> i As Integer)
End Sub
End Class
Public Class Class2
Inherits Class1
Public Overrides Sub M(<MyPublic> i As Integer)
MyBase.M(i)$$
End Sub
End Class]]></a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "M(i As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitGenericMethod() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub goo(Of T)(x As T)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub goo(Of T)(x As T)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo(Of T)(x As T)
MyBase.goo(x)$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(Of T)(x As T)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545627")>
<WpfFact>
Public Async Function TestCommitGenericMethodOnArraySubstitutedGenericType() As Task
Dim markupBeforeCommit = <a>Class A(Of T)
Public Overridable Sub M(Of U As T)()
End Sub
End Class
Class B
Inherits A(Of Object())
Overrides $$
End Class</a>
Dim expectedCode = <a>Class A(Of T)
Public Overridable Sub M(Of U As T)()
End Sub
End Class
Class B
Inherits A(Of Object())
Public Overrides Sub M(Of U As Object())()
MyBase.M(Of U)()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "M(Of U)()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitFormats() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub goo()
End Sub
End Class
Class CDerived
Inherits CBase
overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub goo()
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo()
MyBase.goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitSimplifiesParameterTypes() As Task
Dim markupBeforeCommit = <a>Imports System
Class CBase
Public Overridable Sub goo(e As System.Exception)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Imports System
Class CBase
Public Overridable Sub goo(e As System.Exception)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo(e As Exception)
MyBase.goo(e)$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(e As Exception)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitSimplifiesReturnType() As Task
Dim markupBeforeCommit = <a>Imports System
Class CBase
Public Overridable Function goo() As System.Exception
Return 0
End Function
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Imports System
Class CBase
Public Overridable Function goo() As System.Exception
Return 0
End Function
End Class
Class CDerived
Inherits CBase
Public Overrides Function goo() As Exception
Return MyBase.goo()$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitEscapedMethodName() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub [Class]()
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub [Class]()
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub [Class]()
MyBase.Class()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "[Class]()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitEscapedPropertyName() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Property [Class] As Integer
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Property [Class] As Integer
End Class
Class CDerived
Inherits CBase
Public Overrides Property [Class] As Integer
Get
Return MyBase.Class$$
End Get
Set(value As Integer)
MyBase.Class = value
End Set
End Property
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "[Class]", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitEscapedParameterName() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub Goo([Integer] As Integer)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub Goo([Integer] As Integer)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub Goo([Integer] As Integer)
MyBase.Goo([Integer])$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo([Integer] As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitByRef() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub goo(ByRef x As Integer, y As String)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub goo(ByRef x As Integer, y As String)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo(ByRef x As Integer, y As String)
MyBase.goo(x, y)$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(ByRef x As Integer, y As String)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529714")>
<WpfFact>
Public Async Function TestCommitGenericMethodTypeParametersNotRenamed() As Task
Dim markupBeforeCommit = <a>Class CGoo
Overridable Function Something(Of X)(arg As X) As X
End Function
End Class
Class Derived(Of X)
Inherits CGoo
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CGoo
Overridable Function Something(Of X)(arg As X) As X
End Function
End Class
Class Derived(Of X)
Inherits CGoo
Public Overrides Function Something(Of X)(arg As X) As X
Return MyBase.Something(arg)$$
End Function
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Something(Of X)(arg As X)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestAddsImports() As Task
Dim markupBeforeCommit = <a>MustInherit Class CBase
MustOverride Sub Goo()
End Class
Class Derived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>MustInherit Class CBase
MustOverride Sub Goo()
End Class
Class Derived
Inherits CBase
Public Overrides Sub Goo()
Throw New System.NotImplementedException()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543937")>
<WpfFact>
Public Async Function TestOptionalArguments() As Task
Dim markupBeforeCommit = <a>Class CBase
Public Overridable Sub goo(Optional x As Integer = 42)
End Sub
End Class
Class CDerived
Inherits CBase
Overrides $$
End Class</a>
Dim expectedCode = <a>Class CBase
Public Overridable Sub goo(Optional x As Integer = 42)
End Sub
End Class
Class CDerived
Inherits CBase
Public Overrides Sub goo(Optional x As Integer = 42)
MyBase.goo(x)$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "goo(x As Integer = 42)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/636706")>
<WpfFact>
Public Async Function TestParameterizedProperty() As Task
Dim markupBeforeCommit = <a>Public Class Goo
Public Overridable Property Bar(bay As Integer) As Integer
Get
Return 23
End Get
Set(value As Integer)
End Set
End Property
End Class
Public Class Goo3
Inherits Goo
Overrides $$
End Class</a>
Dim expectedCode = <a>Public Class Goo
Public Overridable Property Bar(bay As Integer) As Integer
Get
Return 23
End Get
Set(value As Integer)
End Set
End Property
End Class
Public Class Goo3
Inherits Goo
Public Overrides Property Bar(bay As Integer) As Integer
Get
Return MyBase.Bar(bay)$$
End Get
Set(value As Integer)
MyBase.Bar(bay) = value
End Set
End Property
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Bar(bay As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529737")>
<WpfFact>
Public Async Function TestOverrideDefaultPropertiesByName() As Task
Dim markupBeforeCommit = <a>Class A
Default Overridable ReadOnly Property Goo(x As Integer) As Object
Get
End Get
End Property
End Class
Class B
Inherits A
Overrides $$
End Class
</a>
Dim expectedCode = <a>Class A
Default Overridable ReadOnly Property Goo(x As Integer) As Object
Get
End Get
End Property
End Class
Class B
Inherits A
Default Public Overrides ReadOnly Property Goo(x As Integer) As Object
Get
Return MyBase.Goo(x)$$
End Get
End Property
End Class
</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo(x As Integer)", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
#End Region
#Region "Commit: With Trivia"
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529216")>
<WpfFact>
Public Async Function TestCommitSurroundingTriviaDirective() As Task
Dim markupBeforeCommit = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
#If True Then
Overrides $$
#End If
End Class</a>
Dim expectedCode = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
#If True Then
Public Overrides Sub Goo()
MyBase.Goo()$$
End Sub
#End If
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitBeforeTriviaDirective() As Task
Dim markupBeforeCommit = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
Overrides $$
#If True Then
#End If
End Class</a>
Dim expectedCode = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
Public Overrides Sub Goo()
MyBase.Goo()$$
End Sub
#If True Then
#End If
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529216")>
<WpfFact>
Public Async Function TestCommitAfterTriviaDirective() As Task
Dim markupBeforeCommit = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
#If True Then
#End If
Overrides $$
End Class</a>
Dim expectedCode = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
#If True Then
#End If
Public Overrides Sub Goo()
MyBase.Goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WpfFact>
Public Async Function TestCommitBeforeComment() As Task
Dim markupBeforeCommit = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
Overrides $$
'SomeComment
End Class</a>
Dim expectedCode = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
Public Overrides Sub Goo()
MyBase.Goo()$$
End Sub
'SomeComment
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529216")>
<WpfFact>
Public Async Function TestCommitAfterComment() As Task
Dim markupBeforeCommit = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
'SomeComment
Overrides $$
End Class</a>
Dim expectedCode = <a>Class Base
Public Overridable Sub Goo()
End Sub
End Class
Class Derived
Inherits Base
'SomeComment
Public Overrides Sub Goo()
MyBase.Goo()$$
End Sub
End Class</a>
Await VerifyCustomCommitProviderAsync(markupBeforeCommit.Value.Replace(vbLf, vbCrLf), "Goo()", expectedCode.Value.Replace(vbLf, vbCrLf))
End Function
#End Region
<WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529572")>
<WpfFact>
Public Async Function TestWitheventsFieldNotOffered() As Task
Dim text = <a>Public Class C1
Public WithEvents w As C1 = Me
End Class
Class C2 : Inherits C1
overrides $$
End Class
</a>
Await VerifyItemIsAbsentAsync(text.Value, "w")
End Function
<WorkItem("https://github.com/dotnet/roslyn/issues/715")>
<WpfFact>
Public Async Function TestEventsNotOffered() As Task
Dim text = <Workspace>
<Project Language="Visual Basic" CommonReferences="true">
<ProjectReference>CSProject</ProjectReference>
<Document FilePath="VBDocument">
Class D
Inherits C
overrides $$
End Class</Document>
</Project>
<Project Language="C#" CommonReferences="true" AssemblyName="CSProject">
<Document FilePath="CSDocument">
using System;
public class C
{
public virtual event EventHandler e;
}
</Document>
</Project>
</Workspace>
Using workspace = TestWorkspace.Create(text, composition:=GetComposition())
Dim hostDocument = workspace.Documents.First()
Dim caretPosition = hostDocument.CursorPosition.Value
Dim document = workspace.CurrentSolution.GetDocument(hostDocument.Id)
Dim service = GetCompletionService(document.Project)
Dim completionList = Await GetCompletionListAsync(service, document, caretPosition, CompletionTrigger.Invoke)
Assert.False(completionList.ItemsList.Any(Function(c) c.DisplayText = "e"))
End Using
End Function
Public Overloads Function VerifyItemExistsAsync(markup As String, expectedItem As String) As Task
Return VerifyItemExistsAsync(markup, expectedItem, isComplexTextEdit:=True)
End Function
End Class
End Namespace
|