public async Task TestNuGetCompletionProvider() { var code = @" using System.Diagnostics; class Test { void Method() { Debug.Assert(true, ""$$""); } } "; using var workspace = TestWorkspace.CreateCSharp(code, openDocuments: true); var nugetCompletionProvider = new DebugAssertTestCompletionProvider(); var reference = new MockAnalyzerReference(nugetCompletionProvider); var project = workspace.CurrentSolution.Projects.Single().AddAnalyzerReference(reference); var completionService = project.LanguageServices.GetRequiredService <CompletionService>(); var document = project.Documents.Single(); var caretPosition = workspace.DocumentWithCursor.CursorPosition ?? throw new InvalidOperationException(); var completions = await completionService.GetCompletionsAsync(document, caretPosition); Assert.NotNull(completions); var item = Assert.Single(completions.Items.Where(item => item.ProviderName == typeof(DebugAssertTestCompletionProvider).FullName)); Assert.Equal("Assertion failed", item.DisplayText); }
public async Task TestNuGetCompletionProvider() { var code = @" using System.Diagnostics; class Test { void Method() { Debug.Assert(true, ""$$""); } } "; using var workspace = TestWorkspace.CreateCSharp(code, openDocuments: true); var nugetCompletionProvider = new DebugAssertTestCompletionProvider(); var reference = new MockAnalyzerReference(nugetCompletionProvider); var project = workspace.CurrentSolution.Projects.Single().AddAnalyzerReference(reference); var completionService = project.LanguageServices.GetRequiredService <CompletionService>(); var document = project.Documents.Single(); var caretPosition = workspace.DocumentWithCursor.CursorPosition ?? throw new InvalidOperationException(); var completions = await completionService.GetCompletionsAsync(document, caretPosition, CompletionOptions.Default, OptionValueSet.Empty); Assert.False(completions.IsEmpty); var item = Assert.Single(completions.ItemsList.Where(item => item.ProviderName == typeof(DebugAssertTestCompletionProvider).FullName)); Assert.Equal(nameof(DebugAssertTestCompletionProvider), item.DisplayText); var expectedDescriptionText = nameof(DebugAssertTestCompletionProvider); var actualDescriptionText = (await completionService.GetDescriptionAsync(document, item, CompletionOptions.Default, SymbolDescriptionOptions.Default).ConfigureAwait(false)) !.Text; Assert.Equal(expectedDescriptionText, actualDescriptionText); var expectedChange = new TextChange(item.Span, nameof(DebugAssertTestCompletionProvider)); var actualChange = (await completionService.GetChangeAsync(document, item).ConfigureAwait(false)).TextChange; Assert.Equal(expectedChange, actualChange); }