/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/Core/Test/Snippets/SnippetCompletionProviderTests.vb
145 строк
7 KB
Tomáš Matoušek
Refactoring of extension methods in source packages (#78620) - take 2 (#78894)
26 июн 2025, 18:42
Не верифицирован
26 июн 2025, 18:42
05fc006
Код
Авторство
О чём код?
' 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 System.Composition Imports Microsoft.CodeAnalysis Imports Microsoft.CodeAnalysis.Collections Imports Microsoft.CodeAnalysis.Completion Imports Microsoft.CodeAnalysis.Host.Mef Imports Microsoft.CodeAnalysis.LanguageService Imports Microsoft.CodeAnalysis.Snippets Imports Microsoft.CodeAnalysis.Test.Utilities Imports Roslyn.Test.Utilities Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Snippets <[UseExportProvider]> <Trait(Traits.Feature, Traits.Features.Snippets)> Public Class SnippetCompletionProviderTests <WpfFact(Skip:="https://github.com/dotnet/roslyn/issues/46295")> Public Async Function SnippetCompletion() As Task Dim markup = "a?$$" Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState testState.SendTabToCompletion() Assert.Equal("a", testState.GetDocumentText()) Await testState.AssertSelectedCompletionItem(displayText:="Shortcut") Dim document = testState.Workspace.CurrentSolution.Projects.First().Documents.First() Dim selectedItem = testState.GetSelectedItem() Dim service = CompletionService.GetService(document) Dim itemDescription = Await service.GetDescriptionAsync(document, selectedItem, CompletionOptions.Default, SymbolDescriptionOptions.Default) Assert.True(itemDescription.Text.StartsWith("Description")) testState.SendTabToCompletion() Assert.True(testState.SnippetExpansionClient.TryInsertExpansionCalled) End Using End Function <WpfFact(Skip:="https://github.com/dotnet/roslyn/issues/46295")> Public Async Function TracksChangeSpanCorrectly() As Task Dim markup = "a?$$" Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState testState.SendTabToCompletion() Await testState.AssertSelectedCompletionItem(displayText:="Shortcut") testState.SendBackSpace() Await testState.AssertSelectedCompletionItem(displayText:="Shortcut") testState.SendTabToCompletion() Await testState.WaitForAsynchronousOperationsAsync() Assert.True(testState.SnippetExpansionClient.TryInsertExpansionCalled) Assert.Equal("Shortcut", testState.GetDocumentText()) End Using End Function <WpfFact> Public Async Function SnippetListOnlyIfTextBeforeQuestionMark() As Task Dim markup = <File> Class C ?$$ End Class</File>.Value Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState testState.SendTabToCompletion() Await testState.AssertNoCompletionSession() End Using End Function <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/21801")> Public Async Function SnippetNotOfferedInComments() As Task Dim markup = <File> Class C $$ End Class</File>.Value Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState Dim workspace = testState.Workspace workspace.GlobalOptions.SetGlobalOption(CompletionOptionsStorage.SnippetsBehavior, LanguageNames.VisualBasic, SnippetsRule.AlwaysInclude) testState.SendTypeChars("'T") Await testState.AssertNoCompletionSession() End Using End Function <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/21801")> Public Async Function SnippetsNotOfferedInDocComments() As Task Dim markup = <File> Class C $$ End Class</File>.Value Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState Dim workspace = testState.Workspace workspace.GlobalOptions.SetGlobalOption(CompletionOptionsStorage.SnippetsBehavior, LanguageNames.VisualBasic, SnippetsRule.AlwaysInclude) testState.SendTypeChars("'''T") Await testState.AssertNoCompletionSession() End Using End Function <WpfFact(Skip:="https://github.com/dotnet/roslyn/issues/46295")> Public Async Function SnippetsAlwaysOfferedOutsideComment() As Task Dim markup = <File> Class C $$ End Class</File>.Value Dim testState = SnippetTestState.CreateTestState(markup, LanguageNames.VisualBasic, extraParts:={GetType(MockSnippetInfoService)}) Using testState Dim workspace = testState.Workspace workspace.GlobalOptions.SetGlobalOption(CompletionOptionsStorage.SnippetsBehavior, LanguageNames.VisualBasic, SnippetsRule.AlwaysInclude) testState.SendTypeChars("Shortcut") Await testState.AssertSelectedCompletionItem(displayText:="Shortcut") End Using End Function End Class <ExportLanguageService(GetType(ISnippetInfoService), LanguageNames.VisualBasic, ServiceLayer.Test), [Shared], PartNotDiscoverable> Friend Class MockSnippetInfoService Implements ISnippetInfoService <ImportingConstructor> <Obsolete(MefConstruction.ImportingConstructorMessage, True)> Public Sub New() End Sub Public Function GetSnippetsAsync_NonBlocking() As IEnumerable(Of SnippetInfo) Implements ISnippetInfoService.GetSnippetsIfAvailable Return SpecializedCollections.SingletonEnumerable(New SnippetInfo("Shortcut", "Title", "Description", "Path")) End Function Public Function ShouldFormatSnippet(snippetInfo As SnippetInfo) As Boolean Implements ISnippetInfoService.ShouldFormatSnippet Return False End Function Public Function SnippetShortcutExists_NonBlocking(shortcut As String) As Boolean Implements ISnippetInfoService.SnippetShortcutExists_NonBlocking Return shortcut = "Shortcut" End Function End Class End Namespace