/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/Test/Structure/BlockStructureServiceTests.cs
126 строк
4 KB
Cyrus Najmabadi
Use raw strings in tests
09 июл 2025, 08:52
09 июл 2025, 08:52
f265dce
Код
Авторство
О чём код?
// 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. #nullable disable using System.Collections.Immutable; using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Structure; using Microsoft.CodeAnalysis.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.Editor.UnitTests.Structure; [UseExportProvider] [Trait(Traits.Feature, Traits.Features.Outlining)] public sealed class BlockStructureServiceTests { [Fact] public async Task TestSimpleLambda() { var code = """ using System.Linq; class C { static void Goo() { var q = Enumerable.Range(1, 100).Where(x => { return x % 2 == 0; }); } } """; using var workspace = TestWorkspace.CreateCSharp(code); var spans = await GetSpansFromWorkspaceAsync(workspace); // ensure all 4 outlining region tags were found (usings, class, method, lambda) Assert.Equal(4, spans.Length); } [Fact] public async Task TestParenthesizedLambda() { var code = """ using System.Linq; class C { static void Goo() { var q = Enumerable.Range(1, 100).Where((x) => { return x % 2 == 0; }); } } """; using var workspace = TestWorkspace.CreateCSharp(code); var spans = await GetSpansFromWorkspaceAsync(workspace); // ensure all 4 outlining region tags were found (usings, class, method, lambda) Assert.Equal(4, spans.Length); } [Fact] public async Task TestAnonymousDelegate() { var code = """ using System.Linq; class C { static void Goo() { var q = Enumerable.Range(1, 100).Where(delegate (int x) { return x % 2 == 0; }); } } """; using var workspace = TestWorkspace.CreateCSharp(code); var spans = await GetSpansFromWorkspaceAsync(workspace); // ensure all 4 outlining region tags were found (usings, class, method, anonymous delegate) Assert.Equal(4, spans.Length); } [Fact] public async Task TestTwoInvocationExpressionsThreeLines() { // The inner argument list should be collapsible, but the outer one shouldn't. var code = """ var x = MyMethod1(MyMethod2( "", ""); """; using var workspace = TestWorkspace.CreateCSharp(code); var spans = await GetSpansFromWorkspaceAsync(workspace); Assert.Equal(1, spans.Length); Assert.Equal(27, spans[0].TextSpan.Start); } private static async Task<ImmutableArray<BlockSpan>> GetSpansFromWorkspaceAsync( TestWorkspace workspace) { var hostDocument = workspace.Documents.First(); var document = workspace.CurrentSolution.GetDocument(hostDocument.Id); var outliningService = document.GetLanguageService<BlockStructureService>(); var options = BlockStructureOptions.Default; var structure = await outliningService.GetBlockStructureAsync(document, options, CancellationToken.None); return structure.Spans; } }