private async Task TestWithOptionsAsync(TestWorkspace workspace, params Action<object>[] expectedResults) { var testDocument = workspace.DocumentWithCursor; var position = testDocument.CursorPosition.GetValueOrDefault(); var documentId = workspace.GetDocumentId(testDocument); var document = workspace.CurrentSolution.GetDocument(documentId); var provider = new SemanticQuickInfoProvider( workspace.GetService<IProjectionBufferFactoryService>(), workspace.GetService<IEditorOptionsFactoryService>(), workspace.GetService<ITextEditorFactoryService>(), workspace.GetService<IGlyphService>(), workspace.GetService<ClassificationTypeMap>()); await TestWithOptionsAsync(document, provider, position, expectedResults); // speculative semantic model if (await CanUseSpeculativeSemanticModelAsync(document, position)) { var buffer = testDocument.TextBuffer; using (var edit = buffer.CreateEdit()) { var currentSnapshot = buffer.CurrentSnapshot; edit.Replace(0, currentSnapshot.Length, currentSnapshot.GetText()); edit.Apply(); } await TestWithOptionsAsync(document, provider, position, expectedResults); } }