From 5f5a6c6d3f4998df8f0356d6961de5c005e343b9 Mon Sep 17 00:00:00 2001 From: konstantin Date: Mon, 31 Jul 2023 12:04:48 +0200 Subject: [PATCH] Add Tests for `RetrieveFormatVersionFromInputFileName` (#116) * Add Tests for `RetrieveFormatVersionFromInputFileName` * remve BOM --- EDILibrary/TemplateHelper.cs | 23 ++++++++++++++-------- EDILibraryTests/TemplateHelperTests.cs | 27 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 EDILibraryTests/TemplateHelperTests.cs diff --git a/EDILibrary/TemplateHelper.cs b/EDILibrary/TemplateHelper.cs index aa04168..9b0e2e2 100644 --- a/EDILibrary/TemplateHelper.cs +++ b/EDILibrary/TemplateHelper.cs @@ -12,7 +12,7 @@ namespace EDILibrary public class TemplateHelper { - private const string FormatVersionPattern = "^(?[A-Z]{6,7})(?[A-Z]?\\d+\\.\\d+[a-z]?)$"; + private static readonly Regex FormatVersionRegex = new(@"^(?[A-Z]{6,7})(?[A-Z]?\d+\.\d+[a-z]?)$"); private static void ParseAPERAKString(string aperak, out string dataType, out int length, out List list) @@ -138,7 +138,7 @@ private static void Recurse(XElement cur, JArray refObj, TreeElement tree) { meta.Add("sg", elem.Attribute("meta.sg").Value); } - //check for parent sg + //check for parent sg else if (cur.Attribute("ref") != null) { meta.Add("sg", cur.Attribute("ref").Value); @@ -453,19 +453,26 @@ public string ConvertFilesToJSON(string inputFileName, string outputFileName, st } - private static string RetrieveFormatVersionFromInputFileName(string inputFileName) + /// + /// Extract the Format version (e.g. "1.0a") from a given template file name (e.g. "COMDIS1.0a.template") + /// + /// path of name of the template file + /// + /// + public static string RetrieveFormatVersionFromInputFileName(string inputFileName) { - var formatVersionRegex = new Regex(FormatVersionPattern); - var part = inputFileName.Split(new[] { ".template" }, StringSplitOptions.None)[0].Split(System.IO.Path.DirectorySeparatorChar).Last(); - var match = formatVersionRegex.Match(part); + var actualFileName = inputFileName.Split(new[] { ".template" }, StringSplitOptions.None)[0].Split(Path.DirectorySeparatorChar).Last(); + var match = FormatVersionRegex.Match(actualFileName); if (match.Success) { return match.Groups["version"].Value; } - else + + if (inputFileName.Contains(".create.template")) { - throw new ArgumentException($"Format version could not be determined: {part}", nameof(inputFileName)); + throw new ArgumentException("Pass the name of the \".template\" file, not \".create.template\"", nameof(inputFileName)); } + throw new ArgumentException($"Format version could not be determined: {actualFileName}", nameof(inputFileName)); } // the format version will be written to the json template file, thus needs to be passed diff --git a/EDILibraryTests/TemplateHelperTests.cs b/EDILibraryTests/TemplateHelperTests.cs new file mode 100644 index 0000000..6e00df8 --- /dev/null +++ b/EDILibraryTests/TemplateHelperTests.cs @@ -0,0 +1,27 @@ +using System.IO; +using EDILibrary; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace EDILibraryTests; + +[TestClass] +public class TemplateHelperTests +{ + [TestMethod] + [DataRow("COMDIS1.0c.template", "1.0c")] + [DataRow("UTILMDGG1.0a.template", "G1.0a")] + public void Test_RetrieveFormatVersionFromInputFileName(string filename, string expectedFormatVersion) + { + var actualFormatVersion = TemplateHelper.RetrieveFormatVersionFromInputFileName(filename); + Assert.AreEqual(expectedFormatVersion, actualFormatVersion); + } + + [TestMethod] + public void Test_RetrieveFormatVersionFromInputFileName_ForPaths() + { + var filepathAsString = $"Path{Path.DirectorySeparatorChar}To{Path.DirectorySeparatorChar}My{Path.DirectorySeparatorChar}Favourite{Path.DirectorySeparatorChar}Templates{Path.DirectorySeparatorChar}folder{Path.DirectorySeparatorChar}COMDIS1.0c.template"; + var actualFormatVersion = TemplateHelper.RetrieveFormatVersionFromInputFileName(filepathAsString); + Assert.AreEqual("1.0c", actualFormatVersion); + } + +}