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);
        }
Beispiel #2
0
        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);
        }