This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
mfgames-nitride-cil/tests/Nitride.IO.Tests/NitrideIOTestBase.cs
2022-06-26 13:50:51 -05:00

57 lines
1.4 KiB
C#

using System;
using System.Text;
using KellermanSoftware.CompareNetObjects;
using MfGames.TestSetup;
using Newtonsoft.Json;
using Xunit.Abstractions;
using Xunit.Sdk;
namespace Nitride.IO.Tests;
public abstract class NitrideIOTestBase : TestBase<NitrideIOTestContext>
{
protected NitrideIOTestBase(ITestOutputHelper output)
: base(output)
{
}
protected void CompareObjects<T>(T expected, T actual)
where T : class
{
CompareLogic compare = new()
{
Config =
{
MaxDifferences = int.MaxValue,
},
};
ComparisonResult comparison = compare.Compare(expected, actual);
if (comparison.AreEqual)
{
return;
}
// Format the error message.
StringBuilder message = new();
message.AppendLine("# Expected");
message.AppendLine();
message.AppendLine(JsonConvert.SerializeObject(expected, Formatting.Indented));
message.AppendLine();
message.Append("# Actual");
message.AppendLine();
message.AppendLine(JsonConvert.SerializeObject(actual, Formatting.Indented));
message.AppendLine();
message.Append("# Results");
message.AppendLine();
message.AppendLine(comparison.DifferencesString);
throw new XunitException(message.ToString());
}
}