/// <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 void VerifyDiagnosticLocation(DiagnosticAnalyzer analyzer, Diagnostic diagnostic, Location actual, DiagnosticResultLocation expected) { var actualSpan = actual.GetLineSpan(); var message = $@"Expected diagnostic to be in file ""{expected.Path}"" was actually in file ""{actualSpan.Path}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "; (actualSpan.Path == expected.Path || (actualSpan.Path is object && actualSpan.Path.Contains("Test0.") && expected.Path.Contains("Test."))) .Should().BeTrue(message); 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) { message = $@"Expected diagnostic to be on line ""{expected.Line}"" was actually on line ""{actualLinePosition.Line + 1}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "; Execute.Assertion.FailWith(message); } } // 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) { message = $@"Expected diagnostic to start at column ""{expected.Column}"" was actually at column ""{actualLinePosition.Character + 1}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "; Execute.Assertion.FailWith(message); } } }
/// <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 void VerifyDiagnosticLocation(DiagnosticAnalyzer analyzer, Diagnostic diagnostic, Location actual, DiagnosticResultLocation expected) { var actualSpan = actual.GetLineSpan(); var message = FormattableString.Invariant( $@"Expected diagnostic to be in file ""{expected.Path}"" was actually in file ""{actualSpan.Path}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "); (actualSpan.Path == expected.Path || (actualSpan.Path != null && actualSpan.Path.Contains("Test0.") && expected.Path.Contains("Test."))) .Should().BeTrue(message); 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) { message = FormattableString.Invariant( $@"Expected diagnostic to be on line ""{expected.Line}"" was actually on line ""{actualLinePosition.Line + 1}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "); Execute.Assertion.FailWith(message); } } // 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) { message = FormattableString.Invariant( $@"Expected diagnostic to start at column ""{expected.Column}"" was actually at column ""{actualLinePosition.Character + 1}"" Diagnostic: {FormatDiagnostics(analyzer, diagnostic)} "); Execute.Assertion.FailWith(message); } } }