using Json2CSharpCodeGenerator.Lib;
using Json2CSharpCodeGenerator.Lib.CodeWriters;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Json2CSharpCodeGenerator.Tests;

[TestClass]
public class Test_9_HANDLE_NUMBERS
{

    [TestMethod]
    public void Run()
    {
        string path = Path.Combine(AppContext.BaseDirectory, "Test_9_HANDLE_NUMBERS_INPUT.txt");
        string resultPath = Path.Combine(AppContext.BaseDirectory, "Test_9_HANDLE_NUMBERS_OUTPUT.txt");
        string input = File.ReadAllText(path);

        CSharpCodeWriter csharpCodeWriter = new();
        JsonClassGenerator jsonClassGenerator = new()
        {
            CodeWriter = csharpCodeWriter
        };

        string returnVal = jsonClassGenerator.GenerateClasses(input, out _).ToString();
        string resultsCompare = File.ReadAllText(resultPath);
        Assert.AreEqual(resultsCompare.NormalizeOutput(), returnVal.NormalizeOutput());
    }

    [TestMethod]
    public void Run2()
    {
        string path = Path.Combine(AppContext.BaseDirectory, "Test_9_HANDLE_NUMBERS_INPUT1.txt");
        string resultPath = Path.Combine(AppContext.BaseDirectory, "Test_9_HANDLE_NUMBERS_OUTPUT1.txt");
        string input = File.ReadAllText(path);

        CSharpCodeWriter csharpCodeWriter = new();
        JsonClassGenerator jsonClassGenerator = new()
        {
            CodeWriter = csharpCodeWriter,
            UsePascalCase = true,
            AttributeLibrary = JsonLibrary.NewtonsoftJson,
            AttributeUsage = JsonPropertyAttributeUsage.Always
        };

        string returnVal = jsonClassGenerator.GenerateClasses(input, out _).ToString();
        string resultsCompare = File.ReadAllText(resultPath);
        Assert.AreEqual(resultsCompare.NormalizeOutput(), returnVal.NormalizeOutput());
    }
}