private void TestCodeRefactoring(Document document, string expected, IDiagnosticLocator locator, int refactoringIndex = 0) { var codeRefactorings = GetCodeRefactorings(document, locator); if (codeRefactorings.Length < refactoringIndex + 1) { throw RoslynTestKitException.CodeRefactoringNotFound(refactoringIndex, codeRefactorings, locator); } if (FailWhenInputContainsErrors) { var errors = document.GetErrors(); if (errors.Count > 0) { throw RoslynTestKitException.UnexpectedErrorDiagnostic(errors); } } Verify.CodeAction(codeRefactorings[refactoringIndex], document, expected); }
private void TestCodeRefactoring(Document document, string expected, IDiagnosticLocator locator, ICodeActionSelector codeActionSelector) { if (FailWhenInputContainsErrors) { var errors = document.GetErrors(); if (errors.Count > 0) { throw RoslynTestKitException.UnexpectedErrorDiagnostic(errors); } } var codeRefactorings = GetCodeRefactorings(document, locator); var selectedRefactoring = codeActionSelector.Find(codeRefactorings); if (selectedRefactoring is null) { throw RoslynTestKitException.CodeRefactoringNotFound(codeActionSelector, codeRefactorings, locator); } Verify.CodeAction(selectedRefactoring, document, expected); }
private ImmutableArray <Diagnostic> GetDiagnostics(Document document) { var analyzers = ImmutableArray.Create(CreateAnalyzer()); var compilation = document.Project.GetCompilationAsync(CancellationToken.None).Result; var compilationWithAnalyzers = compilation.WithAnalyzers(analyzers, cancellationToken: CancellationToken.None); var discarded = compilation.GetDiagnostics(CancellationToken.None); var errorsInDocument = discarded.Where(x => x.Severity == DiagnosticSeverity.Error).ToArray(); if (errorsInDocument.Length > 0 && ThrowsWhenInputDocumentContainsError) { throw RoslynTestKitException.UnexpectedErrorDiagnostic(errorsInDocument); } var tree = document.GetSyntaxTreeAsync(CancellationToken.None).GetAwaiter().GetResult(); var builder = ImmutableArray.CreateBuilder <Diagnostic>(); foreach (var diagnostic in compilationWithAnalyzers.GetAnalyzerDiagnosticsAsync().GetAwaiter().GetResult()) { builder.Add(diagnostic); } return(builder.ToImmutable()); }