using System.Text.RegularExpressions;

namespace Json2CSharpCodeGenerator.Tests;

public static class TestUtility
{
    private static readonly Regex _SpaceRegex = new("( +)", RegexOptions.Compiled);

    public static string NormalizeOutput(this string testData)
    {
        string testDataCleaned = testData
            .Replace("\r", "")
            .Replace("\n", " ")
            //             .Replace(" ", " ")
            .Replace("\t", " ")

#if DEBUG
                .Replace(",", ",\r\n") // Parameters/arguments
            .Replace("{", "\r\n{\r\n")
            .Replace("}", "\r\n}\r\n")
            .Replace(";", ";\r\n")

            .Replace("\r\n\r\n", "\r\n")
            .Replace("\r\n\r\n", "\r\n")
#endif
            ;

        testDataCleaned = _SpaceRegex.Replace(input: testDataCleaned, m => " "); // i.e.: replace runs of 2-or-more space characters (0x20) with a single space character.

        testDataCleaned = testDataCleaned.Trim();

        return "\r\n" + testDataCleaned + "\r\n"; // The outer line-breaks are added because VS's Test Explorer's Actual vs. Expected comparison is harder to read without them.
    }
}