1- using System ;
2- using System . IO ;
1+ using System . IO ;
32using System . Threading . Tasks ;
43using Verify ;
54
65static class Comparer
76{
8- public static async Task < CompareResult > Text ( FilePair file , string scrubbedInput , bool ignoreTrailingWhitespace )
7+ public static async Task < CompareResult > Text ( FilePair file , string scrubbedInput , VerifySettings settings )
98 {
10- scrubbedInput = Scrub ( scrubbedInput , ignoreTrailingWhitespace ) ;
9+ scrubbedInput = Scrub ( scrubbedInput , settings . ignoreTrailingWhitespace ) ;
1110 FileHelpers . DeleteIfEmpty ( file . Verified ) ;
1211 if ( ! File . Exists ( file . Verified ) )
1312 {
@@ -16,8 +15,9 @@ public static async Task<CompareResult> Text(FilePair file, string scrubbedInput
1615 }
1716
1817 var verifiedText = await FileHelpers . ReadText ( file . Verified ) ;
19- verifiedText = Scrub ( verifiedText , ignoreTrailingWhitespace ) ;
20- if ( string . Equals ( verifiedText , scrubbedInput ) )
18+ verifiedText = Scrub ( verifiedText , settings . ignoreTrailingWhitespace ) ;
19+
20+ if ( await CompareStrings ( scrubbedInput , verifiedText , settings ) )
2121 {
2222 return CompareResult . Equal ;
2323 }
@@ -26,6 +26,29 @@ public static async Task<CompareResult> Text(FilePair file, string scrubbedInput
2626 return CompareResult . NotEqual ;
2727 }
2828
29+ static Task < bool > CompareStrings ( string scrubbedInput , string verifiedText , VerifySettings settings )
30+ {
31+ var extension = settings . ExtensionOrTxt ( ) ;
32+ if ( settings . comparer != null )
33+ {
34+ using var stream1 = MemoryStream ( scrubbedInput ) ;
35+ using var stream2 = MemoryStream ( verifiedText ) ;
36+ return settings . comparer ( settings , stream1 , stream2 ) ;
37+ }
38+ if ( SharedVerifySettings . TryGetComparer ( extension , out var comparer ) )
39+ {
40+ using var stream1 = MemoryStream ( scrubbedInput ) ;
41+ using var stream2 = MemoryStream ( verifiedText ) ;
42+ return comparer ( settings , stream1 , stream2 ) ;
43+ }
44+ return Task . FromResult ( string . Equals ( verifiedText , scrubbedInput ) ) ;
45+ }
46+
47+ static MemoryStream MemoryStream ( string text )
48+ {
49+ return new MemoryStream ( FileHelpers . Utf8NoBOM . GetBytes ( text ) ) ;
50+ }
51+
2952 static string Scrub ( string scrubbedInput , bool ignoreTrailingWhitespace )
3053 {
3154 scrubbedInput = scrubbedInput . Replace ( "\r \n " , "\n " ) ;
0 commit comments