File: Structure\ParameterListSyntaxStructureTests.cs
Web Access
Project: src\src\EditorFeatures\CSharpTest\Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests.csproj (Microsoft.CodeAnalysis.CSharp.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.
 
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Test.Utilities;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Structure;
 
[Trait(Traits.Feature, Traits.Features.Outlining)]
public sealed class ParameterListSyntaxStructureTests : AbstractCSharpSyntaxNodeStructureTests<ParameterListSyntax>
{
    internal override AbstractSyntaxStructureProvider CreateProvider() => new ParameterListStructureProvider();
 
    [Fact]
    public Task TestMethodDeclarationSingleLine()
        => VerifyBlockSpansAsync("""
            void M$$()
            {
            }
            """);
 
    [Fact]
    public Task TestMethodDeclarationTwoParametersInTwoLines()
        => VerifyBlockSpansAsync("""
            void M$$(string a,
                string b)
            {
            }
            """);
 
    [Fact]
    public Task TestMethodDeclarationThreeLines()
        => VerifyBlockSpansAsync("""
            void M$${|span:(
                string a,
                string b)|} 
            {
            }
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
 
    [Fact]
    public Task TestConstructorDeclarationSingleLine()
        => VerifyBlockSpansAsync("""
            class C
            {
                C$$() { }
            }
            """);
 
    [Fact]
    public Task TestConstructorDeclarationThreeLines()
        => VerifyBlockSpansAsync("""
            class C
            {
                C$${|span:(
                    string a,
                    string b)|} { }
            }
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
 
    [Fact]
    public Task TestDelegateDeclarationSingleLine()
        => VerifyBlockSpansAsync("""
            delegate void D$$();
            """);
 
    [Fact]
    public Task TestDelegateDeclarationThreeLines()
        => VerifyBlockSpansAsync("""
            delegate void D$${|span:(
                string a,
                string b)|};
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
 
    [Fact]
    public Task TestLambdaExpressionSingleLine()
        => VerifyBlockSpansAsync("""
            var x = $$() => { };
            """);
 
    [Fact]
    public Task TestLambdaExpressionThreeLines()
        => VerifyBlockSpansAsync("""
            var x = $${|span:(
                string a,
                string b)|} => { };
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
 
    [Fact]
    public Task TestAnonymousMethodSingleLine()
        => VerifyBlockSpansAsync("""
            var x = delegate$$() { };
            """);
 
    [Fact]
    public Task TestAnonymousMethodThreeLines()
        => VerifyBlockSpansAsync("""
            var x = delegate$${|span:(
                string a,
                string b)|} { };
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
 
    [Fact]
    public Task TestLocalFunctionSingleLine()
        => VerifyBlockSpansAsync("""
            void M()
            {
                void LocalFunction$$() { }
            }
            """);
 
    [Fact]
    public Task TestLocalFunctionThreeLines()
        => VerifyBlockSpansAsync("""
            void M()
            {
                void LocalFunction$${|span:(
                    string a,
                    string b)|} { }
            }
            """,
            Region("span", CSharpStructureHelpers.Ellipsis, autoCollapse: false));
}