Problem
\GetMessageText\ in \ConsoleAssert.cs\ contains an inline loop that finds the first character difference between two strings:
\\csharp
// existing loop in GetMessageText
for (int i = 0; i < Math.Min(expected.Length, actual.Length); i++)
{
if (expected[i] != actual[i]) { ... }
}
\\
PR #104 added \WildcardMatchAnalyzer.FindMismatchPosition\ which does exactly the same thing.
Impact
This is a minor DRY issue in pre-existing code — no functional bug. The inline loop is used for the non-wildcard mismatch message while \FindMismatchPosition\ is used for the wildcard branch. Both compute the first differing character index.
Suggestion
Extract a shared \FindFirstMismatchIndex(string expected, string actual)\ helper (or delegate the \GetMessageText\ call to \WildcardMatchAnalyzer.FindMismatchPosition) so the logic lives in one place.
This was identified during the PR #104 review but left out because the inline loop is pre-existing code unrelated to the wildcard feature.
Problem
\GetMessageText\ in \ConsoleAssert.cs\ contains an inline loop that finds the first character difference between two strings:
\\csharp
// existing loop in GetMessageText
for (int i = 0; i < Math.Min(expected.Length, actual.Length); i++)
{
if (expected[i] != actual[i]) { ... }
}
\\
PR #104 added \WildcardMatchAnalyzer.FindMismatchPosition\ which does exactly the same thing.
Impact
This is a minor DRY issue in pre-existing code — no functional bug. The inline loop is used for the non-wildcard mismatch message while \FindMismatchPosition\ is used for the wildcard branch. Both compute the first differing character index.
Suggestion
Extract a shared \FindFirstMismatchIndex(string expected, string actual)\ helper (or delegate the \GetMessageText\ call to \WildcardMatchAnalyzer.FindMismatchPosition) so the logic lives in one place.
This was identified during the PR #104 review but left out because the inline loop is pre-existing code unrelated to the wildcard feature.