File: Completion\CompletionProviders\AbstractContextTests.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.Text
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Completion.CompletionProviders
 
    Public MustInherit Class AbstractContextTests
        Protected MustOverride Function CheckResultAsync(validLocation As Boolean, position As Integer, syntaxTree As SyntaxTree) As Task
 
        Private Async Function VerifyWorkerAsync(markup As String, validLocation As Boolean) As Threading.Tasks.Task
            Dim text As String = Nothing
            Dim position As Integer = Nothing
            MarkupTestFile.GetPosition(markup, text, position)
 
            'VerifyWithPlaceHolderRemoved(text, validLocation)
            'VerifyAtEndOfFile(text, validLocation)
            Await VerifyAtPosition_TypePartiallyWrittenAsync(text, position, validLocation)
            Await VerifyAtEndOfFile_TypePartiallyWrittenAsync(text, position, validLocation)
        End Function
 
        Private Function VerifyAtPositionAsync(text As String, position As Integer, validLocation As Boolean, insertText As String) As Threading.Tasks.Task
            text = text.Substring(0, position) & insertText & text.Substring(position)
 
            position += insertText.Length
 
            Dim tree = SyntaxFactory.ParseSyntaxTree(SourceText.From(text))
            Return CheckResultAsync(validLocation, position, tree)
        End Function
 
        Private Function VerifyAtPosition_TypePartiallyWrittenAsync(text As String, position As Integer, validLocation As Boolean) As Threading.Tasks.Task
            Return VerifyAtPositionAsync(text, position, validLocation, "Str")
        End Function
 
        Private Async Function VerifyAtEndOfFileAsync(text As String, position As Integer, validLocation As Boolean, insertText As String) As Task
            ' only do this if the placeholder was at the end of the text.
            If text.Length <> position Then
                Return
            End If
 
            text = text.Substring(startIndex:=0, length:=position) & insertText
 
            position += insertText.Length
 
            Dim tree = SyntaxFactory.ParseSyntaxTree(SourceText.From(text))
            Await CheckResultAsync(validLocation, position, tree)
        End Function
 
        Private Function VerifyAtEndOfFile_TypePartiallyWrittenAsync(text As String, position As Integer, validLocation As Boolean) As Task
            Return VerifyAtEndOfFileAsync(text, position, validLocation, "Str")
        End Function
 
        Protected Function VerifyTrueAsync(text As String) As Threading.Tasks.Task
            Return VerifyWorkerAsync(text, validLocation:=True)
        End Function
 
        Protected Function VerifyFalseAsync(text As String) As Threading.Tasks.Task
            Return VerifyWorkerAsync(text, validLocation:=False)
        End Function
 
        Protected Shared Function AddInsideMethod(text As String) As String
            Return "Class C" & vbCrLf &
                   "    Function F()" & vbCrLf &
                   "        " & text & vbCrLf &
                   "    End Function" & vbCrLf &
                   "End Class"
        End Function
 
        Protected Shared Function CreateContent(ParamArray contents As String()) As String
            Return String.Join(vbCrLf, contents)
        End Function
    End Class
End Namespace