diff --git a/SabreTools.DatFiles.Test/DatFileTests.cs b/SabreTools.DatFiles.Test/DatFileTests.cs index 26fa619c..5317d1aa 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using SabreTools.DatItems; using SabreTools.DatItems.Formats; using Xunit; @@ -51,7 +52,125 @@ namespace SabreTools.DatFiles.Test #region FillHeaderFromPath - // TODO: Write FillHeaderFromPath tests + [Fact] + public void FillHeaderFromPath_NoNameNoDesc_NotBare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, false); + + Assert.Equal("Filename (1980-01-01)", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Filename (1980-01-01)", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NoNameNoDesc_Bare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, true); + + Assert.Equal("Filename", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Filename", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NoNameDesc_NotBare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, false); + + Assert.Equal("Description (1980-01-01)", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Description", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NoNameDesc_Bare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, true); + + Assert.Equal("Description", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Description", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NameNoDesc_NotBare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, "Name"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, false); + + Assert.Equal("Name", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Name (1980-01-01)", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NameNoDesc_Bare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, "Name"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, true); + + Assert.Equal("Name", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Name", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NameDesc_NotBare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, "Name"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, false); + + Assert.Equal("Name", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Description", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } + + [Fact] + public void FillHeaderFromPath_NameDesc_Bare() + { + DatFile datFile = new Formats.Logiqx(datFile: null, deprecated: false); + datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, "Name "); + datFile.Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, "Description "); + datFile.Header.SetFieldValue(Models.Metadata.Header.DateKey, "1980-01-01"); + + string path = Path.Combine("Fake", "Path", "Filename"); + datFile.FillHeaderFromPath(path, true); + + Assert.Equal("Name", datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); + Assert.Equal("Description", datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); + } #endregion diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index 0cf55228..f1916f15 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -87,13 +87,13 @@ namespace SabreTools.DatFiles // If the description is defined but not the name, set the name from the description if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description)) { - Header.SetFieldValue(Models.Metadata.Header.NameKey, description + (bare ? string.Empty : $" ({date})")); + name = description + (bare ? string.Empty : $" ({date})"); } // If the name is defined but not the description, set the description from the name else if (!string.IsNullOrEmpty(name) && string.IsNullOrEmpty(description)) { - Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, name + (bare ? string.Empty : $" ({date})")); + description = name + (bare ? string.Empty : $" ({date})"); } // If neither the name or description are defined, set them from the automatic values @@ -101,13 +101,21 @@ namespace SabreTools.DatFiles { string[] splitpath = path.TrimEnd(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar); #if NETFRAMEWORK - Header.SetFieldValue(Models.Metadata.Header.NameKey, splitpath[splitpath.Length - 1]); - Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, splitpath[splitpath.Length - 1] + (bare ? string.Empty : $" ({date})")); + name = splitpath[splitpath.Length - 1]; + description = splitpath[splitpath.Length - 1] + (bare ? string.Empty : $" ({date})"); #else - Header.SetFieldValue(Models.Metadata.Header.NameKey, splitpath[^1] + (bare ? string.Empty : $" ({date})")); - Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, splitpath[^1] + (bare ? string.Empty : $" ({date})")); + name = splitpath[^1] + (bare ? string.Empty : $" ({date})"); + description = splitpath[^1] + (bare ? string.Empty : $" ({date})"); #endif } + + // Trim both fields + name = name?.Trim(); + description = description?.Trim(); + + // Set the fields back + Header.SetFieldValue(Models.Metadata.Header.NameKey, name); + Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, description); } #endregion