File: KeywordHighlighting\MultiLineLambdaExpressionHighlighterTests.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.VisualBasic.KeywordHighlighting
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.KeywordHighlighting
    <Trait(Traits.Feature, Traits.Features.KeywordHighlighting)>
    Public Class MultiLineLambdaExpressionHighlighterTests
        Inherits AbstractVisualBasicKeywordHighlighterTests
 
        Friend Overrides Function GetHighlighterType() As Type
            Return GetType(MultiLineLambdaExpressionHighlighter)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda1() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = {|Cursor:[|Function|]|}(x As Integer)
            If x = 0 Then [|Return|] -1 Else [|Exit Function|]
        [|End Function|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda2() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Function|](x As Integer)
            If x = 0 Then {|Cursor:[|Return|]|} -1 Else [|Exit Function|]
        [|End Function|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda3() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Function|](x As Integer)
            If x = 0 Then [|Return|] -1 Else {|Cursor:[|Exit Function|]|}
        [|End Function|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda4() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Function|](x As Integer)
            If x = 0 Then [|Return|] -1 Else [|Exit Function|]
        {|Cursor:[|End Function|]|}
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineSubLambda1() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = {|Cursor:[|Sub|]|}(x As Integer)
            If x = 0 Then [|Return|] Else [|Exit Sub|]
        [|End Sub|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineSubLambda2() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Sub|](x As Integer)
            If x = 0 Then {|Cursor:[|Return|]|} Else [|Exit Sub|]
        [|End Sub|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineSubLambda3() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Sub|](x As Integer)
            If x = 0 Then [|Return|] Else {|Cursor:[|Exit Sub|]|}
        [|End Sub|]
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineSubLambda4() As Task
            Await TestAsync(<Text>
Class C
Sub M()
Dim f = [|Sub|](x As Integer)
            If x = 0 Then [|Return|] Else [|Exit Sub|]
        {|Cursor:[|End Sub|]|}
End Sub
End Class</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineLambda_AsyncExample2_1() As Task
            Await TestAsync(
<Text>
Imports System.Threading.Tasks
 
Class AsyncExample
    Async Function AsyncMethod() As Task(Of Integer)
        Dim hours = 24
        Return hours
    End Function
 
    Async Sub UseAsync()
        Dim lambda = {|Cursor:[|Async Function|]|}()
                         [|Return Await|] AsyncMethod()
                     [|End Function|]
 
        Dim result = Await AsyncMethod()
 
        Exit Sub
 
        Dim resultTask = AsyncMethod()
        result = Await resultTask
 
        result = Await lambda()
    End Sub
End Class
 
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineLambda_AsyncExample2_2() As Task
            Await TestAsync(
<Text>
Imports System.Threading.Tasks
 
Class AsyncExample
    Async Function AsyncMethod() As Task(Of Integer)
        Dim hours = 24
        Return hours
    End Function
 
    Async Sub UseAsync()
        Dim lambda = [|Async Function|]()
                         {|Cursor:[|Return Await|]|} AsyncMethod()
                     [|End Function|]
 
        Dim result = Await AsyncMethod()
 
        Exit Sub
 
        Dim resultTask = AsyncMethod()
        result = Await resultTask
 
        result = Await lambda()
    End Sub
End Class
 
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineLambda_AsyncExample2_3() As Task
            Await TestAsync(
<Text>
Imports System.Threading.Tasks
 
Class AsyncExample
    Async Function AsyncMethod() As Task(Of Integer)
        Dim hours = 24
        Return hours
    End Function
 
    Async Sub UseAsync()
        Dim lambda = [|Async Function|]()
                         [|Return Await|] AsyncMethod()
                     {|Cursor:[|End Function|]|}
 
        Dim result = Await AsyncMethod()
 
        Exit Sub
 
        Dim resultTask = AsyncMethod()
        result = Await resultTask
 
        result = Await lambda()
    End Sub
End Class
 
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_1() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = {|Cursor:[|Iterator Function|]|}()
                           [|Yield|] 5
                           [|Yield|] 15
 
                           [|Exit Function|]
 
                           [|Yield|] 25
                       [|End Function|]
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_2() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = [|Iterator Function|]()
                           {|Cursor:[|Yield|]|} 5
                           [|Yield|] 15
 
                           [|Exit Function|]
 
                           [|Yield|] 25
                       [|End Function|]
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_3() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = [|Iterator Function|]()
                           [|Yield|] 5
                           {|Cursor:[|Yield|]|} 15
 
                           [|Exit Function|]
 
                           [|Yield|] 25
                       [|End Function|]
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_4() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = [|Iterator Function|]()
                           [|Yield|] 5
                           [|Yield|] 15
 
                           {|Cursor:[|Exit Function|]|}
 
                           [|Yield|] 25
                       [|End Function|]
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_5() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = [|Iterator Function|]()
                           [|Yield|] 5
                           [|Yield|] 15
 
                           [|Exit Function|]
 
                           {|Cursor:[|Yield|]|} 25
                       [|End Function|]
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
        <Fact>
        Public Async Function TestMultilineFunctionLambda_IteratorExample2_6() As Task
            Await TestAsync(
<Text>
Iterator Function Test() As IEnumerable(Of Integer)
 
    Dim listFunction = [|Iterator Function|]()
                           [|Yield|] 5
                           [|Yield|] 15
 
                           [|Exit Function|]
 
                           [|Yield|] 25
                       {|Cursor:[|End Function|]|}
 
    Yield 1
 
    Return
 
    For Each i In listFunction()
        Yield i
    Next
End Function
</Text>)
        End Function
 
    End Class
End Namespace