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

namespace Json2CSharpCodeGenerator.Tests;

[TestClass]
public class Test_1_5_SETTINGS_FIELDS_JSONPROPERTY
{

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

        CSharpCodeWriter csharpCodeWriter = new();
        JsonClassGenerator jsonClassGenerator = new()
        {
            CodeWriter = csharpCodeWriter,
            OutputType = OutputTypes.MutableClass
        };
        jsonClassGenerator.MutableClasses.Members = OutputMembers.AsPublicFields;
        jsonClassGenerator.AttributeLibrary = JsonLibrary.NewtonsoftJson;
        jsonClassGenerator.AttributeUsage = JsonPropertyAttributeUsage.Always;

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