/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/Test2/ReferenceHighlighting/AbstractReferenceHighlightingTests.vb
67 строк
4 KB
Cyrus Najmabadi
Organize VB imports
27 июн 2025, 21:53
27 июн 2025, 21:53
e9c47fd
Код
Авторство
О чём код?
' 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.Editor.ReferenceHighlighting Imports Microsoft.CodeAnalysis.Editor.Shared.Extensions Imports Microsoft.CodeAnalysis.Editor.Shared.Tagging Imports Microsoft.CodeAnalysis.Editor.Tagging Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces Imports Microsoft.CodeAnalysis.Options Imports Microsoft.CodeAnalysis.ReferenceHighlighting Imports Microsoft.CodeAnalysis.Remote.Testing Imports Microsoft.VisualStudio.Text Namespace Microsoft.CodeAnalysis.Editor.UnitTests.ReferenceHighlighting <[UseExportProvider]> Public MustInherit Class AbstractReferenceHighlightingTests Private Shared ReadOnly s_composition As TestComposition = EditorTestCompositions.EditorFeatures.WithTestHostParts(TestHost.OutOfProcess).AddParts( GetType(NoCompilationContentTypeDefinitions), GetType(NoCompilationContentTypeLanguageService)) Protected Async Function VerifyHighlightsAsync(test As XElement, testHost As TestHost, Optional optionIsEnabled As Boolean = True) As Task Using workspace = EditorTestWorkspace.Create(test, composition:=s_composition.WithTestHostParts(testHost)) WpfTestRunner.RequireWpfFact($"{NameOf(AbstractReferenceHighlightingTests)}.{NameOf(Me.VerifyHighlightsAsync)} creates asynchronous taggers") Dim globalOptions = workspace.GetService(Of IGlobalOptionService) Dim tagProducer = New ReferenceHighlightingViewTaggerProvider( workspace.GetService(Of TaggerHost)) Dim hostDocument = workspace.Documents.Single(Function(d) d.CursorPosition.HasValue) Dim caretPosition = hostDocument.CursorPosition.Value Dim snapshot = hostDocument.GetTextBuffer().CurrentSnapshot globalOptions.SetGlobalOption(ReferenceHighlightingOptionsStorage.ReferenceHighlighting, hostDocument.Project.Language, optionIsEnabled) Dim document = workspace.CurrentSolution.GetDocument(hostDocument.Id) Dim context = New TaggerContext(Of NavigableHighlightTag)( document, snapshot, frozenPartialSemantics:=False, New SnapshotPoint(snapshot, caretPosition)) Await tagProducer.GetTestAccessor().ProduceTagsAsync(context) Dim producedTags = From tag In context.TagSpans Order By tag.Span.Start Let spanType = If(tag.Tag.Type = DefinitionHighlightTag.TagId, "Definition", If(tag.Tag.Type = WrittenReferenceHighlightTag.TagId, "WrittenReference", "Reference")) Select spanType + ":" + tag.Span.Span.ToTextSpan().ToString() Dim expectedTags As New List(Of String) For Each hostDocument In workspace.Documents Dim nameAndSpansList = hostDocument.AnnotatedSpans.SelectMany( Function(name) name.Value, Function(name, span) _ New With {.Name = name.Key, .Span = span }) For Each nameAndSpan In nameAndSpansList.OrderBy(Function(x) x.Span.Start) expectedTags.Add(nameAndSpan.Name + ":" + nameAndSpan.Span.ToString()) Next Next AssertEx.Equal(expectedTags, producedTags) End Using End Function End Class End Namespace