Files
SabreTools/SabreTools.DatFiles.Test/DatHeaderTests.cs

211 lines
6.0 KiB
C#
Raw Normal View History

2025-01-30 09:20:33 -05:00
using Xunit;
namespace SabreTools.DatFiles.Test
{
public class DatHeaderTests
{
2025-01-30 09:57:29 -05:00
#region CanOpenSpecified
2025-01-30 10:17:00 -05:00
[Fact]
public void CanOpenSpecified_Missing()
{
DatHeader header = new DatHeader();
header.SetFieldValue<string[]>(Models.Metadata.Header.CanOpenKey, null);
Assert.False(header.CanOpenSpecified);
}
[Fact]
public void CanOpenSpecified_Empty()
{
DatHeader header = new DatHeader();
header.SetFieldValue<string[]>(Models.Metadata.Header.CanOpenKey, []);
Assert.False(header.CanOpenSpecified);
}
[Fact]
public void CanOpenSpecified_Exists()
{
DatHeader header = new DatHeader();
header.SetFieldValue<string[]>(Models.Metadata.Header.CanOpenKey, ["value"]);
Assert.True(header.CanOpenSpecified);
}
2025-01-30 09:57:29 -05:00
#endregion
#region ImagesSpecified
2025-01-30 10:17:00 -05:00
[Fact]
public void ImagesSpecified_Missing()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Images>(Models.Metadata.Header.ImagesKey, null);
Assert.False(header.ImagesSpecified);
}
[Fact]
public void ImagesSpecified_Exists()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Images>(Models.Metadata.Header.ImagesKey, new());
Assert.True(header.ImagesSpecified);
}
2025-01-30 09:57:29 -05:00
#endregion
#region InfosSpecified
2025-01-30 10:17:00 -05:00
[Fact]
public void InfosSpecified_Missing()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Infos>(Models.Metadata.Header.InfosKey, null);
Assert.False(header.InfosSpecified);
}
[Fact]
public void InfosSpecified_Exists()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Infos>(Models.Metadata.Header.InfosKey, new());
Assert.True(header.InfosSpecified);
}
2025-01-30 09:57:29 -05:00
#endregion
#region NewDatSpecified
2025-01-30 10:17:00 -05:00
[Fact]
public void NewDatSpecified_Missing()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.NewDat>(Models.Metadata.Header.NewDatKey, null);
Assert.False(header.NewDatSpecified);
}
[Fact]
public void NewDatSpecified_Exists()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.NewDat>(Models.Metadata.Header.NewDatKey, new());
Assert.True(header.NewDatSpecified);
}
2025-01-30 09:57:29 -05:00
#endregion
#region SearchSpecified
2025-01-30 10:17:00 -05:00
[Fact]
public void SearchSpecified_Missing()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Search>(Models.Metadata.Header.SearchKey, null);
Assert.False(header.SearchSpecified);
}
[Fact]
public void SearchSpecified_Exists()
{
DatHeader header = new DatHeader();
header.SetFieldValue<Models.OfflineList.Search>(Models.Metadata.Header.SearchKey, new());
Assert.True(header.SearchSpecified);
}
2025-01-30 09:57:29 -05:00
#endregion
2025-01-30 09:20:33 -05:00
#region Clone
[Fact]
public void CloneTest()
{
2025-01-30 10:17:00 -05:00
DatHeader header = new DatHeader();
header.SetFieldValue(Models.Metadata.Header.NameKey, "name");
2025-01-30 09:20:33 -05:00
2025-01-30 10:17:00 -05:00
object clone = header.Clone();
2025-01-30 09:20:33 -05:00
DatHeader? actual = clone as DatHeader;
Assert.NotNull(actual);
Assert.Equal("name", actual.GetStringFieldValue(Models.Metadata.Header.NameKey));
}
#endregion
#region CloneFormat
[Fact]
public void CloneFormatTest()
{
2025-01-30 10:17:00 -05:00
DatHeader header = new DatHeader();
header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.Logiqx);
2025-01-30 09:20:33 -05:00
2025-01-30 10:17:00 -05:00
object clone = header.Clone();
2025-01-30 09:20:33 -05:00
DatHeader? actual = clone as DatHeader;
Assert.NotNull(actual);
Assert.Equal(DatFormat.Logiqx, actual.GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
}
#endregion
#region GetInternalClone
[Fact]
public void GetInternalCloneTest()
{
2025-01-30 10:17:00 -05:00
DatHeader header = new DatHeader();
header.SetFieldValue(Models.Metadata.Header.NameKey, "name");
2025-01-30 09:20:33 -05:00
2025-01-30 10:17:00 -05:00
Models.Metadata.Header actual = header.GetInternalClone();
2025-01-30 09:20:33 -05:00
Assert.Equal("name", actual[Models.Metadata.Header.NameKey]);
}
#endregion
#region Equals
[Fact]
public void Equals_Null_False()
{
DatHeader self = new DatHeader();
DatHeader? other = null;
bool actual = self.Equals(other);
Assert.False(actual);
}
[Fact]
public void Equals_DefaultInternal_True()
{
DatHeader self = new DatHeader();
DatHeader? other = new DatHeader();
bool actual = self.Equals(other);
Assert.True(actual);
}
[Fact]
public void Equals_MismatchedInternal_False()
{
DatHeader self = new DatHeader();
self.SetFieldValue(Models.Metadata.Header.NameKey, "self");
DatHeader? other = new DatHeader();
other.SetFieldValue(Models.Metadata.Header.NameKey, "other");
bool actual = self.Equals(other);
Assert.False(actual);
}
[Fact]
public void Equals_EqualInternal_True()
{
DatHeader self = new DatHeader();
self.SetFieldValue(Models.Metadata.Header.NameKey, "name");
DatHeader? other = new DatHeader();
other.SetFieldValue(Models.Metadata.Header.NameKey, "name");
bool actual = self.Equals(other);
Assert.True(actual);
}
#endregion
}
}