private static string GetNotInExpectedFileMessage( DiagnosticAnalyzer analyzer, Diagnostic diagnostic, DiagnosticResultLocation expected, FileLinePositionSpan actualSpan) { return($"Expected diagnostic to be in file \"{expected.Path}\" was actually in file \"{actualSpan.Path}\"{Environment.NewLine}{Environment.NewLine}Diagnostic:{Environment.NewLine} {FormatDiagnostics(analyzer, new[] { diagnostic })}{Environment.NewLine}"); }
private static string GetNotInExpectedColumn( DiagnosticAnalyzer analyzer, Diagnostic diagnostic, DiagnosticResultLocation expected, LinePosition actualLinePosition) { return($"Expected diagnostic to start at column \"{expected.Column}\" was actually at column \"{actualLinePosition.Character + 1}\"{Environment.NewLine}{Environment.NewLine}Diagnostic:{Environment.NewLine} {FormatDiagnostics(analyzer, new[] { diagnostic })}{Environment.NewLine}"); }
private static string GetNotInExpectedLineMessage( DiagnosticAnalyzer analyzer, Diagnostic diagnostic, DiagnosticResultLocation expected, LinePosition actualLinePosition) { return($"Expected diagnostic to be on line \"{expected.Line}\" was actually on line \"{actualLinePosition.Line + 1}\"{Environment.NewLine}{Environment.NewLine}Diagnostic:{Environment.NewLine} {FormatDiagnostics(analyzer, new[] { diagnostic })}{Environment.NewLine}"); }
/// <summary> /// Helper method to VerifyDiagnosticResult that checks the location of a diagnostic and compares it with the location in the expected DiagnosticResult. /// </summary> /// <param name="analyzer">The analyzer that was being run on the sources</param> /// <param name="diagnostic">The diagnostic that was found in the code</param> /// <param name="actual">The Location of the Diagnostic found in the code</param> /// <param name="expected">The DiagnosticResultLocation that should have been found</param> private static VerifyDiagnosticAnalyzerResult VerifyDiagnosticLocation( DiagnosticAnalyzer analyzer, Diagnostic diagnostic, Location actual, DiagnosticResultLocation expected) { var actualSpan = actual.GetLineSpan(); var isInExpectedFile = actualSpan.Path == expected.Path || (actualSpan.Path != null && actualSpan.Path.Contains("Test0.") && expected.Path.Contains("Test.")); if (!isInExpectedFile) { string msg = GetNotInExpectedFileMessage(analyzer, diagnostic, expected, actualSpan); return(VerifyDiagnosticAnalyzerResult.Fail(msg)); } var actualLinePosition = actualSpan.StartLinePosition; // Only check line position if there is an actual line in the real diagnostic if (actualLinePosition.Line > 0) { if (actualLinePosition.Line + 1 != expected.Line) { string msg = GetNotInExpectedLineMessage(analyzer, diagnostic, expected, actualLinePosition); return(VerifyDiagnosticAnalyzerResult.Fail(msg)); } } // Only check column position if there is an actual column position in the real diagnostic if (actualLinePosition.Character > 0) { if (actualLinePosition.Character + 1 != expected.Column) { string msg = GetNotInExpectedColumn(analyzer, diagnostic, expected, actualLinePosition); return(VerifyDiagnosticAnalyzerResult.Fail(msg)); } } return(VerifyDiagnosticAnalyzerResult.Ok()); }