private static void VerifyFixAllCodeFix(string path, string pathToExpected, DiagnosticAnalyzer diagnosticAnalyzer, CodeFixProvider codeFixProvider, string codeFixTitle) { var fixAllProvider = codeFixProvider.GetFixAllProvider(); if (fixAllProvider == null) { return; } using (var workspace = new AdhocWorkspace()) { var document = GetDocument(path, GeneratedAssemblyName, workspace); List <Diagnostic> diagnostics; string actualCode; CalculateDiagnosticsAndCode(diagnosticAnalyzer, document, out diagnostics, out actualCode); Assert.AreNotEqual(0, diagnostics.Count); var fixAllDiagnosticProvider = new FixAllDiagnosticProvider( codeFixProvider.FixableDiagnosticIds.ToImmutableHashSet(), (doc, ids, ct) => Task.FromResult( GetDiagnostics(document.Project.GetCompilationAsync().Result, diagnosticAnalyzer)), null); var fixAllContext = new FixAllContext(document, codeFixProvider, FixAllScope.Document, codeFixTitle, codeFixProvider.FixableDiagnosticIds, fixAllDiagnosticProvider, CancellationToken.None); var codeActionToExecute = fixAllProvider.GetFixAsync(fixAllContext).Result; Assert.IsNotNull(codeActionToExecute); document = ApplyCodeFix(document, codeActionToExecute); CalculateDiagnosticsAndCode(diagnosticAnalyzer, document, out diagnostics, out actualCode); Assert.AreEqual(File.ReadAllText(pathToExpected), actualCode); } }
private static void RunFixAllProvider(DiagnosticAnalyzer diagnosticAnalyzer, CodeFixProvider codeFixProvider, string codeFixTitle, FixAllProvider fixAllProvider, Document document, ParseOptions parseOption, string pathToExpected) { var currentDocument = document; List<Diagnostic> diagnostics; string actualCode; CalculateDiagnosticsAndCode(diagnosticAnalyzer, currentDocument, parseOption, out diagnostics, out actualCode); Assert.AreNotEqual(0, diagnostics.Count); var fixAllDiagnosticProvider = new FixAllDiagnosticProvider( codeFixProvider.FixableDiagnosticIds.ToImmutableHashSet(), (doc, ids, ct) => Task.FromResult( GetDiagnostics(currentDocument.Project.GetCompilationAsync(ct).Result, diagnosticAnalyzer)), null); var fixAllContext = new FixAllContext(currentDocument, codeFixProvider, FixAllScope.Document, codeFixTitle, codeFixProvider.FixableDiagnosticIds, fixAllDiagnosticProvider, CancellationToken.None); var codeActionToExecute = fixAllProvider.GetFixAsync(fixAllContext).Result; Assert.IsNotNull(codeActionToExecute); currentDocument = ApplyCodeFix(currentDocument, codeActionToExecute); CalculateDiagnosticsAndCode(diagnosticAnalyzer, currentDocument, parseOption, out diagnostics, out actualCode); Assert.AreEqual(File.ReadAllText(pathToExpected), actualCode); }
private static void VerifyFixAllCodeFix(string path, string pathToExpected, DiagnosticAnalyzer diagnosticAnalyzer, CodeFixProvider codeFixProvider, string codeFixTitle) { var fixAllProvider = codeFixProvider.GetFixAllProvider(); if (fixAllProvider == null) { return; } using (var workspace = new AdhocWorkspace()) { var document = GetDocument(path, GeneratedAssemblyName, workspace); List<Diagnostic> diagnostics; string actualCode; CalculateDiagnosticsAndCode(diagnosticAnalyzer, document, out diagnostics, out actualCode); Assert.AreNotEqual(0, diagnostics.Count); var fixAllDiagnosticProvider = new FixAllDiagnosticProvider( codeFixProvider.FixableDiagnosticIds.ToImmutableHashSet(), (doc, ids, ct) => Task.FromResult( GetDiagnostics(document.Project.GetCompilationAsync().Result, diagnosticAnalyzer)), null); var fixAllContext = new FixAllContext(document, codeFixProvider, FixAllScope.Document, codeFixTitle, codeFixProvider.FixableDiagnosticIds, fixAllDiagnosticProvider, CancellationToken.None); var codeActionToExecute = fixAllProvider.GetFixAsync(fixAllContext).Result; Assert.IsNotNull(codeActionToExecute); document = ApplyCodeFix(document, codeActionToExecute); CalculateDiagnosticsAndCode(diagnosticAnalyzer, document, out diagnostics, out actualCode); Assert.AreEqual(File.ReadAllText(pathToExpected), actualCode); } }