Files
SabreTools/SabreTools.Core.Test/Tools/ConvertersTests.cs

155 lines
5.8 KiB
C#
Raw Normal View History

2020-12-18 14:22:56 -08:00
using SabreTools.Core.Tools;
using SabreTools.DatFiles;
2020-12-18 14:22:56 -08:00
using Xunit;
2025-01-04 19:47:39 -05:00
namespace SabreTools.Core.Test.Tools
2020-12-18 14:22:56 -08:00
{
2025-01-04 19:47:39 -05:00
// TODO: Remove reliance on anything but SabreTools.Core
2020-12-18 14:22:56 -08:00
public class ConvertersTests
{
2023-04-20 10:34:37 -04:00
#region String to Enum
[Theory]
[InlineData(null, MergingFlag.None)]
[InlineData("none", MergingFlag.None)]
[InlineData("split", MergingFlag.Split)]
[InlineData("merged", MergingFlag.Merged)]
[InlineData("nonmerged", MergingFlag.NonMerged)]
[InlineData("unmerged", MergingFlag.NonMerged)]
[InlineData("fullmerged", MergingFlag.FullMerged)]
[InlineData("device", MergingFlag.DeviceNonMerged)]
[InlineData("devicenonmerged", MergingFlag.DeviceNonMerged)]
[InlineData("deviceunmerged", MergingFlag.DeviceNonMerged)]
[InlineData("full", MergingFlag.FullNonMerged)]
[InlineData("fullnonmerged", MergingFlag.FullNonMerged)]
[InlineData("fullunmerged", MergingFlag.FullNonMerged)]
2024-03-05 13:32:49 -05:00
public void AsMergingFlagTest(string? field, MergingFlag expected)
2023-04-20 10:34:37 -04:00
{
2024-03-05 15:24:11 -05:00
MergingFlag actual = field.AsEnumValue<MergingFlag>();
2023-04-20 10:34:37 -04:00
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(null, NodumpFlag.None)]
[InlineData("none", NodumpFlag.None)]
[InlineData("obsolete", NodumpFlag.Obsolete)]
[InlineData("required", NodumpFlag.Required)]
[InlineData("ignore", NodumpFlag.Ignore)]
2024-03-05 13:32:49 -05:00
public void AsNodumpFlagTest(string? field, NodumpFlag expected)
2023-04-20 10:34:37 -04:00
{
2024-03-05 15:24:11 -05:00
NodumpFlag actual = field.AsEnumValue<NodumpFlag>();
2023-04-20 10:34:37 -04:00
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(null, PackingFlag.None)]
[InlineData("none", PackingFlag.None)]
[InlineData("yes", PackingFlag.Zip)]
[InlineData("zip", PackingFlag.Zip)]
[InlineData("no", PackingFlag.Unzip)]
[InlineData("unzip", PackingFlag.Unzip)]
[InlineData("partial", PackingFlag.Partial)]
[InlineData("flat", PackingFlag.Flat)]
2024-12-07 11:27:54 -05:00
[InlineData("fileonly", PackingFlag.FileOnly)]
2024-03-05 13:32:49 -05:00
public void AsPackingFlagTest(string? field, PackingFlag expected)
2023-04-20 10:34:37 -04:00
{
2024-03-05 15:24:11 -05:00
PackingFlag actual = field.AsEnumValue<PackingFlag>();
2023-04-20 10:34:37 -04:00
Assert.Equal(expected, actual);
}
2025-01-04 19:47:39 -05:00
[Theory]
[InlineData(null, null)]
[InlineData("INVALID", null)]
[InlineData("yes", true)]
[InlineData("True", true)]
[InlineData("no", false)]
[InlineData("False", false)]
public void AsYesNoTest(string? field, bool? expected)
{
bool? actual = field.AsYesNo();
Assert.Equal(expected, actual);
}
2023-04-20 10:34:37 -04:00
#endregion
2023-04-20 12:12:56 -04:00
#region Enum to String
[Theory]
[InlineData(MergingFlag.None, true, "none")]
[InlineData(MergingFlag.None, false, "none")]
[InlineData(MergingFlag.Split, true, "split")]
[InlineData(MergingFlag.Split, false, "split")]
[InlineData(MergingFlag.Merged, true, "merged")]
[InlineData(MergingFlag.Merged, false, "merged")]
[InlineData(MergingFlag.NonMerged, true, "unmerged")]
[InlineData(MergingFlag.NonMerged, false, "nonmerged")]
[InlineData(MergingFlag.FullMerged, true, "fullmerged")]
[InlineData(MergingFlag.FullMerged, false, "fullmerged")]
[InlineData(MergingFlag.DeviceNonMerged, true, "deviceunmerged")]
[InlineData(MergingFlag.DeviceNonMerged, false, "device")]
[InlineData(MergingFlag.FullNonMerged, true, "fullunmerged")]
[InlineData(MergingFlag.FullNonMerged, false, "full")]
2024-03-05 15:24:11 -05:00
public void FromMergingFlagTest(MergingFlag field, bool useSecond, string? expected)
2023-04-20 12:12:56 -04:00
{
2024-03-05 15:24:11 -05:00
string? actual = field.AsStringValue<MergingFlag>(useSecond);
2023-04-20 12:12:56 -04:00
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(NodumpFlag.None, "none")]
[InlineData(NodumpFlag.Obsolete, "obsolete")]
[InlineData(NodumpFlag.Required, "required")]
[InlineData(NodumpFlag.Ignore, "ignore")]
2024-03-05 13:32:49 -05:00
public void FromNodumpFlagTest(NodumpFlag field, string? expected)
2023-04-20 12:12:56 -04:00
{
2024-03-05 15:24:11 -05:00
string? actual = field.AsStringValue<NodumpFlag>();
2023-04-20 12:12:56 -04:00
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(PackingFlag.None, true, "none")]
[InlineData(PackingFlag.None, false, "none")]
[InlineData(PackingFlag.Zip, true, "yes")]
[InlineData(PackingFlag.Zip, false, "zip")]
[InlineData(PackingFlag.Unzip, true, "no")]
[InlineData(PackingFlag.Unzip, false, "unzip")]
[InlineData(PackingFlag.Partial, true, "partial")]
[InlineData(PackingFlag.Partial, false, "partial")]
[InlineData(PackingFlag.Flat, true, "flat")]
[InlineData(PackingFlag.Flat, false, "flat")]
2024-12-07 11:27:54 -05:00
[InlineData(PackingFlag.FileOnly, true, "fileonly")]
[InlineData(PackingFlag.FileOnly, false, "fileonly")]
2024-03-05 15:24:11 -05:00
public void FromPackingFlagTest(PackingFlag field, bool useSecond, string? expected)
2023-04-20 12:12:56 -04:00
{
2024-03-05 15:24:11 -05:00
string? actual = field.AsStringValue<PackingFlag>(useSecond);
2023-04-20 12:12:56 -04:00
Assert.Equal(expected, actual);
}
2025-01-04 19:47:39 -05:00
[Theory]
[InlineData(null, null)]
[InlineData(true, "yes")]
[InlineData(false, "no")]
public void FromYesNo(bool? field, string? expected)
{
string? actual = field.FromYesNo();
Assert.Equal(expected, actual);
}
2023-04-20 12:12:56 -04:00
#endregion
2023-04-20 13:54:59 -04:00
#region Generators
[Theory]
[InlineData(MergingFlag.None, 12)]
[InlineData(NodumpFlag.None, 4)]
2024-12-07 11:27:54 -05:00
[InlineData(PackingFlag.None, 8)]
2023-04-20 13:54:59 -04:00
public void GenerateToEnumTest<T>(T value, int expected)
{
var actual = Converters.GenerateToEnum<T>();
Assert.Equal(default, value);
Assert.Equal(expected, actual.Keys.Count);
}
#endregion
2020-12-18 14:22:56 -08:00
}
}