From 0b97f2a588379c71da4d0c5809e6aecd63651adf Mon Sep 17 00:00:00 2001 From: Ninja Date: Tue, 12 Nov 2024 14:02:54 +0000 Subject: [PATCH 1/8] - Checkpoint: First baseline commit --- Ninja.FileUtil.Core.sln => FileUtil.Core.sln | 4 +- src/FileUtil/AssemblyInfo.cs | 19 +++ .../ColumnAttribute.cs | 2 +- .../Configuration/IConfigSettings.cs | 2 +- .../Configuration/IDelimiter.cs | 2 +- .../Configuration/ILineHeaders.cs | 4 +- .../Configuration/IParserSettings.cs | 2 +- .../Configuration/IProviderSettings.cs | 2 +- src/{Ninja.FileUtil => FileUtil}/Engine.cs | 46 ++++---- src/{Ninja.FileUtil => FileUtil}/File.cs | 6 +- src/{Ninja.FileUtil => FileUtil}/FileLine.cs | 2 +- .../FileUtil.csproj} | 17 ++- src/{Ninja.FileUtil => FileUtil}/IFileLine.cs | 4 +- src/{Ninja.FileUtil => FileUtil}/LineType.cs | 2 +- .../Parser/Extensions.cs | 9 +- .../Parser/ILineParser.cs | 2 +- .../Parser/Impl/LineParser.cs | 42 +++---- .../Provider/IFileHelper.cs | 2 +- .../Provider/IFileProvider.cs | 2 +- .../Provider/Impl/DefaultProvider.cs | 7 +- .../Provider/Impl/FileHelper.cs | 4 +- .../Resources.Designer.cs | 4 +- .../Resources.resx | 0 .../Configuration/Delimiter.cs | 4 +- .../Configuration/LineHeaders.cs | 4 +- .../Configuration/TestFullConfig.cs | 4 +- .../Engine/MultiDelimited/DataLine.cs | 4 +- .../Engine/MultiDelimited/EngineFixture.cs | 17 ++- .../Engine/MultiDelimited/FooterLine.cs | 2 +- .../Engine/MultiDelimited/HeaderLine.cs | 4 +- .../Engine/SingleDelimited/EngineFixture.cs | 12 +- .../Engine/SingleDelimited/SingleLine.cs | 2 +- .../FileUtil.Tests.csproj} | 10 +- .../Parser/InvalidTestLine.cs | 4 +- .../Parser/LineParserFixture.cs | 108 ++++++++++++++++++ .../Parser/TestLine.cs | 7 +- .../Provider/DefaultProviderFixture.cs | 23 ++-- .../Provider/FileHelperFixture.cs | 19 ++- .../TestFile.txt | 0 .../Parser/LineParserFixture.cs | 107 ----------------- 40 files changed, 263 insertions(+), 254 deletions(-) rename Ninja.FileUtil.Core.sln => FileUtil.Core.sln (89%) create mode 100644 src/FileUtil/AssemblyInfo.cs rename src/{Ninja.FileUtil => FileUtil}/ColumnAttribute.cs (92%) rename src/{Ninja.FileUtil => FileUtil}/Configuration/IConfigSettings.cs (80%) rename src/{Ninja.FileUtil => FileUtil}/Configuration/IDelimiter.cs (67%) rename src/{Ninja.FileUtil => FileUtil}/Configuration/ILineHeaders.cs (62%) rename src/{Ninja.FileUtil => FileUtil}/Configuration/IParserSettings.cs (78%) rename src/{Ninja.FileUtil => FileUtil}/Configuration/IProviderSettings.cs (85%) rename src/{Ninja.FileUtil => FileUtil}/Engine.cs (83%) rename src/{Ninja.FileUtil => FileUtil}/File.cs (94%) rename src/{Ninja.FileUtil => FileUtil}/FileLine.cs (92%) rename src/{Ninja.FileUtil/Ninja.FileUtil.csproj => FileUtil/FileUtil.csproj} (71%) rename src/{Ninja.FileUtil => FileUtil}/IFileLine.cs (61%) rename src/{Ninja.FileUtil => FileUtil}/LineType.cs (81%) rename src/{Ninja.FileUtil => FileUtil}/Parser/Extensions.cs (81%) rename src/{Ninja.FileUtil => FileUtil}/Parser/ILineParser.cs (85%) rename src/{Ninja.FileUtil => FileUtil}/Parser/Impl/LineParser.cs (82%) rename src/{Ninja.FileUtil => FileUtil}/Provider/IFileHelper.cs (91%) rename src/{Ninja.FileUtil => FileUtil}/Provider/IFileProvider.cs (68%) rename src/{Ninja.FileUtil => FileUtil}/Provider/Impl/DefaultProvider.cs (93%) rename src/{Ninja.FileUtil => FileUtil}/Provider/Impl/FileHelper.cs (95%) rename src/{Ninja.FileUtil => FileUtil}/Resources.Designer.cs (96%) rename src/{Ninja.FileUtil => FileUtil}/Resources.resx (100%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Configuration/Delimiter.cs (69%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Configuration/LineHeaders.cs (82%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Configuration/TestFullConfig.cs (79%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/MultiDelimited/DataLine.cs (66%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/MultiDelimited/EngineFixture.cs (90%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/MultiDelimited/FooterLine.cs (68%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/MultiDelimited/HeaderLine.cs (71%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/SingleDelimited/EngineFixture.cs (90%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Engine/SingleDelimited/SingleLine.cs (76%) rename test/{Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj => FileUtil.Tests/FileUtil.Tests.csproj} (80%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Parser/InvalidTestLine.cs (72%) create mode 100644 test/FileUtil.Tests/Parser/LineParserFixture.cs rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Parser/TestLine.cs (82%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Provider/DefaultProviderFixture.cs (90%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/Provider/FileHelperFixture.cs (72%) rename test/{Ninja.FileUtil.Tests => FileUtil.Tests}/TestFile.txt (100%) delete mode 100644 test/Ninja.FileUtil.Tests/Parser/LineParserFixture.cs diff --git a/Ninja.FileUtil.Core.sln b/FileUtil.Core.sln similarity index 89% rename from Ninja.FileUtil.Core.sln rename to FileUtil.Core.sln index 757a97e..1c311eb 100644 --- a/Ninja.FileUtil.Core.sln +++ b/FileUtil.Core.sln @@ -5,9 +5,9 @@ VisualStudioVersion = 17.6.33712.159 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution", "Solution", "{4181FF50-7335-4293-8EE4-66E0C47C736E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ninja.FileUtil", "src\Ninja.FileUtil\Ninja.FileUtil.csproj", "{FD920B11-BA4F-4781-BD56-56CF362982CF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FileUtil", "src\FileUtil\FileUtil.csproj", "{FD920B11-BA4F-4781-BD56-56CF362982CF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ninja.FileUtil.Tests", "test\Ninja.FileUtil.Tests\Ninja.FileUtil.Tests.csproj", "{95A1410C-6FB4-446D-A692-9BC018882298}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FileUtil.Tests", "test\FileUtil.Tests\FileUtil.Tests.csproj", "{95A1410C-6FB4-446D-A692-9BC018882298}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{D549CC35-5318-45B0-ACCD-F28C543E482C}" ProjectSection(SolutionItems) = preProject diff --git a/src/FileUtil/AssemblyInfo.cs b/src/FileUtil/AssemblyInfo.cs new file mode 100644 index 0000000..ae4c1b7 --- /dev/null +++ b/src/FileUtil/AssemblyInfo.cs @@ -0,0 +1,19 @@ +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// In SDK-style projects such as this one, several assembly attributes that were historically +// defined in this file are now automatically added during build and populated with +// values defined in project properties. For details of which attributes are included +// and how to customise this process see: https://aka.ms/assembly-info-properties + +// Setting ComVisible to false makes the types in this assembly not visible to COM +// components. If you need to access a type in this assembly from COM, set the ComVisible +// attribute to true on that type. + +[assembly: ComVisible(false)] +[assembly: InternalsVisibleTo("FileUtil.Tests")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] + +// The following GUID is for the ID of the typelib if this project is exposed to COM. + +[assembly: Guid("5188e472-36fc-4e3c-9978-17d5e32c9ee8")] \ No newline at end of file diff --git a/src/Ninja.FileUtil/ColumnAttribute.cs b/src/FileUtil/ColumnAttribute.cs similarity index 92% rename from src/Ninja.FileUtil/ColumnAttribute.cs rename to src/FileUtil/ColumnAttribute.cs index 5ffa9f0..b4ecf9f 100644 --- a/src/Ninja.FileUtil/ColumnAttribute.cs +++ b/src/FileUtil/ColumnAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Ninja.FileUtil +namespace FileUtil { public class ColumnAttribute : Attribute { diff --git a/src/Ninja.FileUtil/Configuration/IConfigSettings.cs b/src/FileUtil/Configuration/IConfigSettings.cs similarity index 80% rename from src/Ninja.FileUtil/Configuration/IConfigSettings.cs rename to src/FileUtil/Configuration/IConfigSettings.cs index bf43be5..747575f 100644 --- a/src/Ninja.FileUtil/Configuration/IConfigSettings.cs +++ b/src/FileUtil/Configuration/IConfigSettings.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Configuration +namespace FileUtil.Configuration { public interface IConfigSettings { diff --git a/src/Ninja.FileUtil/Configuration/IDelimiter.cs b/src/FileUtil/Configuration/IDelimiter.cs similarity index 67% rename from src/Ninja.FileUtil/Configuration/IDelimiter.cs rename to src/FileUtil/Configuration/IDelimiter.cs index 188f40c..51363de 100644 --- a/src/Ninja.FileUtil/Configuration/IDelimiter.cs +++ b/src/FileUtil/Configuration/IDelimiter.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Configuration +namespace FileUtil.Configuration { public interface IDelimiter { diff --git a/src/Ninja.FileUtil/Configuration/ILineHeaders.cs b/src/FileUtil/Configuration/ILineHeaders.cs similarity index 62% rename from src/Ninja.FileUtil/Configuration/ILineHeaders.cs rename to src/FileUtil/Configuration/ILineHeaders.cs index f221ab0..f991a4b 100644 --- a/src/Ninja.FileUtil/Configuration/ILineHeaders.cs +++ b/src/FileUtil/Configuration/ILineHeaders.cs @@ -1,6 +1,6 @@ -namespace Ninja.FileUtil.Configuration +namespace FileUtil.Configuration { - public interface ILineHeaders + public interface ILineHeaders { string Header { get; set; } string Footer { get; set; } diff --git a/src/Ninja.FileUtil/Configuration/IParserSettings.cs b/src/FileUtil/Configuration/IParserSettings.cs similarity index 78% rename from src/Ninja.FileUtil/Configuration/IParserSettings.cs rename to src/FileUtil/Configuration/IParserSettings.cs index 5d7f35a..c9a6f35 100644 --- a/src/Ninja.FileUtil/Configuration/IParserSettings.cs +++ b/src/FileUtil/Configuration/IParserSettings.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Configuration +namespace FileUtil.Configuration { public interface IParserSettings { diff --git a/src/Ninja.FileUtil/Configuration/IProviderSettings.cs b/src/FileUtil/Configuration/IProviderSettings.cs similarity index 85% rename from src/Ninja.FileUtil/Configuration/IProviderSettings.cs rename to src/FileUtil/Configuration/IProviderSettings.cs index 7d70e85..a1d40de 100644 --- a/src/Ninja.FileUtil/Configuration/IProviderSettings.cs +++ b/src/FileUtil/Configuration/IProviderSettings.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Configuration +namespace FileUtil.Configuration { public interface IProviderSettings { diff --git a/src/Ninja.FileUtil/Engine.cs b/src/FileUtil/Engine.cs similarity index 83% rename from src/Ninja.FileUtil/Engine.cs rename to src/FileUtil/Engine.cs index b51f637..d5310ca 100644 --- a/src/Ninja.FileUtil/Engine.cs +++ b/src/FileUtil/Engine.cs @@ -1,11 +1,11 @@ -using System.Linq; -using Ninja.FileUtil.Configuration; -using Ninja.FileUtil.Parser; -using Ninja.FileUtil.Parser.Impl; -using Ninja.FileUtil.Provider; -using Ninja.FileUtil.Provider.Impl; +using System.Linq; +using FileUtil.Configuration; +using FileUtil.Parser; +using FileUtil.Parser.Impl; +using FileUtil.Provider; +using FileUtil.Provider.Impl; -namespace Ninja.FileUtil +namespace FileUtil { public class Engine { @@ -28,7 +28,6 @@ internal Engine(ILineParser lineParser, IFileProvider fileProvider) public Engine(IConfigSettings settings) : this(new LineParser(settings.ParserSettings), new DefaulProvider(settings.ProviderSettings, new FileHelper())) { - } /// @@ -39,8 +38,8 @@ public Engine(IConfigSettings settings) public Engine(IParserSettings parserSettings, IFileProvider fileProvider) : this(new LineParser(parserSettings), fileProvider) { - } + /// /// Get all single fixed format lines from a text file parsed into a strongly typed array /// Default delimiter is '|'. Override by specifying the delimiter in parser settings. @@ -56,27 +55,27 @@ public Engine(IParserSettings parserSettings, IFileProvider fileProvider) { var files = fileProvider.GetFiles(); return files.Select(file => new File + { + FileMeta = new FileMeta { - FileMeta = new FileMeta - { - FileName = file.FileName, - FilePath = file.FilePath, - FileSize = file.FileSize, - Lines = file.Lines, - }, + FileName = file.FileName, + FilePath = file.FilePath, + FileSize = file.FileSize, + Lines = file.Lines, + }, - Data = lineParser.Parse(file.Lines) - }) + Data = lineParser.Parse(file.Lines) + }) .ToArray(); } /// - /// Get all multi-format lines from a text file parsed into header, data and footer + /// Get all multi-format lines from a text file parsed into header, data and footer /// typed arrays respectively. /// Default delimiter is '|'. /// By default, Header line starts with H, data line starts with D and footer line starts with F. /// Override these values in parser settings. - /// Example File - + /// Example File - /// "H|22-10-2016|Employee Status" /// "D|John Walsh|456RT4|True" /// "D|Mark Walsh|456RT5|True" @@ -88,11 +87,11 @@ public Engine(IParserSettings parserSettings, IFileProvider fileProvider) /// /// Collection of Files each parsed with header, footer and data typed arrays /// - public File[] GetFiles() + public File[] GetFiles() where TH : FileLine, new() where TD : FileLine, new() where TF : FileLine, new() - { + { var files = fileProvider.GetFiles(); return files.Select(file => @@ -113,8 +112,7 @@ public File[] GetFiles() }; return parsed; - }).ToArray(); } } -} +} \ No newline at end of file diff --git a/src/Ninja.FileUtil/File.cs b/src/FileUtil/File.cs similarity index 94% rename from src/Ninja.FileUtil/File.cs rename to src/FileUtil/File.cs index c2232da..4d2bfbc 100644 --- a/src/Ninja.FileUtil/File.cs +++ b/src/FileUtil/File.cs @@ -1,6 +1,6 @@ -namespace Ninja.FileUtil +namespace FileUtil { - public class File where T: FileLine + public class File where T : FileLine { /// /// File meta data. @@ -10,7 +10,7 @@ public class File where T: FileLine /// Strongly typed parsed lines. /// public T[] Data { get; set; } - + } public class File where TH : FileLine, new() diff --git a/src/Ninja.FileUtil/FileLine.cs b/src/FileUtil/FileLine.cs similarity index 92% rename from src/Ninja.FileUtil/FileLine.cs rename to src/FileUtil/FileLine.cs index bdf9047..3d86839 100644 --- a/src/Ninja.FileUtil/FileLine.cs +++ b/src/FileUtil/FileLine.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Ninja.FileUtil +namespace FileUtil { public abstract class FileLine : IFileLine { diff --git a/src/Ninja.FileUtil/Ninja.FileUtil.csproj b/src/FileUtil/FileUtil.csproj similarity index 71% rename from src/Ninja.FileUtil/Ninja.FileUtil.csproj rename to src/FileUtil/FileUtil.csproj index 3ebedd1..5d94199 100644 --- a/src/Ninja.FileUtil/Ninja.FileUtil.csproj +++ b/src/FileUtil/FileUtil.csproj @@ -2,25 +2,30 @@ net8.0 Public - https://github.com/TechNinjaLabs/FileUtil.Core + https://github.com/CodeShayk/FileUtil.Core csv tsv fixed-width delimiter-file delimiter file-parser file parser true true .Net Library to read from fixed width or delimiter separated file using strongly typed objects. Example: pipe delimited, csv, tsv, etc. en-GB - Tech Ninja Labs - Tech Ninja Labs + Code Shayk + Code Shayk FixedWidth.FileParser Fixed Width File Parser - https://github.com/TechNinjaLabs/FileUtil.Core + https://github.com/CodeShayk/FileUtil.Core/wiki https://1drv.ms/u/s!Aq_ncig7TU4551b5fzxOad-pDMfL - 3.0.0 + 4.0.0 FixedWidth.FileParser - © Copyright 2024 Tech Ninja Labs. + © Copyright 2024 Code Shayk. ninja-icon-16.png README.md License.md + True + True + + + True diff --git a/src/Ninja.FileUtil/IFileLine.cs b/src/FileUtil/IFileLine.cs similarity index 61% rename from src/Ninja.FileUtil/IFileLine.cs rename to src/FileUtil/IFileLine.cs index e495231..5bb8b7f 100644 --- a/src/Ninja.FileUtil/IFileLine.cs +++ b/src/FileUtil/IFileLine.cs @@ -1,8 +1,6 @@ using System.Collections.Generic; -using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Ninja.FileUtil.Tests")] -namespace Ninja.FileUtil +namespace FileUtil { internal interface IFileLine { diff --git a/src/Ninja.FileUtil/LineType.cs b/src/FileUtil/LineType.cs similarity index 81% rename from src/Ninja.FileUtil/LineType.cs rename to src/FileUtil/LineType.cs index 20c8d93..de840c7 100644 --- a/src/Ninja.FileUtil/LineType.cs +++ b/src/FileUtil/LineType.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil +namespace FileUtil { public enum LineType { diff --git a/src/Ninja.FileUtil/Parser/Extensions.cs b/src/FileUtil/Parser/Extensions.cs similarity index 81% rename from src/Ninja.FileUtil/Parser/Extensions.cs rename to src/FileUtil/Parser/Extensions.cs index 8aa59e7..884979e 100644 --- a/src/Ninja.FileUtil/Parser/Extensions.cs +++ b/src/FileUtil/Parser/Extensions.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; -namespace Ninja.FileUtil.Parser +namespace FileUtil.Parser { internal static class Extensions { @@ -13,7 +13,8 @@ public static bool In(this string input, params string[] values) public static void SetError(this IFileLine obj, string error) { - if (obj.Errors == null) obj.Errors = new List(); + if (obj.Errors == null) + obj.Errors = new List(); obj.Errors.Add(error); } @@ -32,7 +33,7 @@ public static string GetLineHead(this ILineHeaders lineHeaders, LineType type) case LineType.Footer: return lineHeaders?.Footer ?? "F"; default: - return lineHeaders?.Data ?? "D"; + return lineHeaders?.Data ?? "D"; } } } diff --git a/src/Ninja.FileUtil/Parser/ILineParser.cs b/src/FileUtil/Parser/ILineParser.cs similarity index 85% rename from src/Ninja.FileUtil/Parser/ILineParser.cs rename to src/FileUtil/Parser/ILineParser.cs index 9d6843f..cbf8b51 100644 --- a/src/Ninja.FileUtil/Parser/ILineParser.cs +++ b/src/FileUtil/Parser/ILineParser.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Parser +namespace FileUtil.Parser { internal interface ILineParser { diff --git a/src/Ninja.FileUtil/Parser/Impl/LineParser.cs b/src/FileUtil/Parser/Impl/LineParser.cs similarity index 82% rename from src/Ninja.FileUtil/Parser/Impl/LineParser.cs rename to src/FileUtil/Parser/Impl/LineParser.cs index 7412256..207cd28 100644 --- a/src/Ninja.FileUtil/Parser/Impl/LineParser.cs +++ b/src/FileUtil/Parser/Impl/LineParser.cs @@ -4,9 +4,10 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; +using Ninja.FileUtil; -namespace Ninja.FileUtil.Parser.Impl +namespace FileUtil.Parser.Impl { internal class LineParser : ILineParser { @@ -30,7 +31,7 @@ public LineParser(IParserSettings parserSettings) private T[] Parse(string[] lines, LineType type, bool hasLineHeader) where T : IFileLine, new() { - + if (lines == null || lines.Length == 0) return Enumerable.Empty().ToArray(); @@ -39,13 +40,13 @@ public LineParser(IParserSettings parserSettings) var objLock = new object(); var index = 0; - var inputs = lines.Select(line => new { Line = line, Index = index++, Type = type}); + var inputs = lines.Select(line => new { Line = line, Index = index++, Type = type }); Parallel.ForEach(inputs, () => new List(), (obj, loopstate, localStorage) => { var parsed = ParseLine(obj.Line, hasLineHeader); - + parsed.Index = obj.Index; parsed.Type = obj.Type; @@ -54,18 +55,19 @@ public LineParser(IParserSettings parserSettings) }, finalStorage => { - if (finalStorage == null) return; + if (finalStorage == null) + return; lock (objLock) finalStorage.ForEach(f => list[f.Index] = f); }); - + return list; } - - private T ParseLine(string line, bool hasLineHeader) where T : IFileLine, new() + + private T ParseLine(string line, bool hasLineHeader) where T : IFileLine, new() { var obj = new T(); @@ -79,24 +81,23 @@ public LineParser(IParserSettings parserSettings) var propInfos = GetLineClassPropertyInfos(); - if(propInfos.Length == 0) + if (propInfos.Length == 0) { obj.SetError(string.Format(Resources.NoColumnAttributesFoundFormat, typeof(T).Name)); return obj; } - - if ((!hasLineHeader && propInfos.Length != (values.Length)) || - (hasLineHeader && propInfos.Length + 1 != values.Length)) + + if (!hasLineHeader && propInfos.Length != values.Length || + hasLineHeader && propInfos.Length + 1 != values.Length) { obj.SetError(Resources.InvalidLengthErrorFormat); return obj; } - + foreach (var propInfo in propInfos) - { try { - var attribute = (ColumnAttribute) propInfo.GetCustomAttributes(typeof (ColumnAttribute), true).First(); + var attribute = (ColumnAttribute)propInfo.GetCustomAttributes(typeof(ColumnAttribute), true).First(); var pvalue = values[!hasLineHeader ? attribute.Index : attribute.Index + 1]; @@ -130,17 +131,16 @@ public LineParser(IParserSettings parserSettings) } catch (Exception e) { - obj.SetError(string.Format(Resources.LineExceptionFormat, propInfo.Name, e.Message) ); + obj.SetError(string.Format(Resources.LineExceptionFormat, propInfo.Name, e.Message)); } - } return obj; } private static PropertyInfo[] GetLineClassPropertyInfos() where T : IFileLine, new() { - var propInfos = typeof (T).GetProperties() - .Where(p => p.GetCustomAttributes(typeof (ColumnAttribute), true).Any() && p.CanWrite) + var propInfos = typeof(T).GetProperties() + .Where(p => p.GetCustomAttributes(typeof(ColumnAttribute), true).Any() && p.CanWrite) .ToArray(); return propInfos; } @@ -148,7 +148,7 @@ public LineParser(IParserSettings parserSettings) private string[] GetDelimiterSeparatedValues(string line) { var values = line.Split(parserSettings.Delimiter.GetValue()) - .Select(x => !string.IsNullOrWhiteSpace(x)? x.Trim(): x) + .Select(x => !string.IsNullOrWhiteSpace(x) ? x.Trim() : x) .ToArray(); return values; } diff --git a/src/Ninja.FileUtil/Provider/IFileHelper.cs b/src/FileUtil/Provider/IFileHelper.cs similarity index 91% rename from src/Ninja.FileUtil/Provider/IFileHelper.cs rename to src/FileUtil/Provider/IFileHelper.cs index 7c9109b..f7681b9 100644 --- a/src/Ninja.FileUtil/Provider/IFileHelper.cs +++ b/src/FileUtil/Provider/IFileHelper.cs @@ -1,6 +1,6 @@ using System.IO; -namespace Ninja.FileUtil.Provider +namespace FileUtil.Provider { public interface IFileHelper { diff --git a/src/Ninja.FileUtil/Provider/IFileProvider.cs b/src/FileUtil/Provider/IFileProvider.cs similarity index 68% rename from src/Ninja.FileUtil/Provider/IFileProvider.cs rename to src/FileUtil/Provider/IFileProvider.cs index 4f75b28..29a35b9 100644 --- a/src/Ninja.FileUtil/Provider/IFileProvider.cs +++ b/src/FileUtil/Provider/IFileProvider.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Provider +namespace FileUtil.Provider { public interface IFileProvider { diff --git a/src/Ninja.FileUtil/Provider/Impl/DefaultProvider.cs b/src/FileUtil/Provider/Impl/DefaultProvider.cs similarity index 93% rename from src/Ninja.FileUtil/Provider/Impl/DefaultProvider.cs rename to src/FileUtil/Provider/Impl/DefaultProvider.cs index 6f8e071..7efae2f 100644 --- a/src/Ninja.FileUtil/Provider/Impl/DefaultProvider.cs +++ b/src/FileUtil/Provider/Impl/DefaultProvider.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; -namespace Ninja.FileUtil.Provider.Impl +namespace FileUtil.Provider.Impl { internal class DefaulProvider : IFileProvider { @@ -22,7 +22,8 @@ public FileMeta[] GetFiles() var paths = fileHelper.GetPathLists(settings.FolderPath, settings.FileNameFormat); - if (!paths.Any()) return files.ToArray(); + if (!paths.Any()) + return files.ToArray(); foreach (var path in paths) { diff --git a/src/Ninja.FileUtil/Provider/Impl/FileHelper.cs b/src/FileUtil/Provider/Impl/FileHelper.cs similarity index 95% rename from src/Ninja.FileUtil/Provider/Impl/FileHelper.cs rename to src/FileUtil/Provider/Impl/FileHelper.cs index 9afaa5c..4a91979 100644 --- a/src/Ninja.FileUtil/Provider/Impl/FileHelper.cs +++ b/src/FileUtil/Provider/Impl/FileHelper.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.IO; -namespace Ninja.FileUtil.Provider.Impl +namespace FileUtil.Provider.Impl { internal class FileHelper : IFileHelper { @@ -17,7 +17,7 @@ public bool TryMoveFile(FileInfo fileInfo, string destinationFile) fileInfo.MoveTo(destinationFile); return true; } - catch (IOException) + catch (IOException) { return false; } diff --git a/src/Ninja.FileUtil/Resources.Designer.cs b/src/FileUtil/Resources.Designer.cs similarity index 96% rename from src/Ninja.FileUtil/Resources.Designer.cs rename to src/FileUtil/Resources.Designer.cs index 3df68d5..195f184 100644 --- a/src/Ninja.FileUtil/Resources.Designer.cs +++ b/src/FileUtil/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -44,7 +44,7 @@ internal Resources() { internal static ResourceManager ResourceManager { get { if (ReferenceEquals(resourceMan, null)) { - ResourceManager temp = new ResourceManager("Ninja.FileUtil.Resources", typeof(Resources).Assembly); + ResourceManager temp = new ResourceManager("FileUtil.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/src/Ninja.FileUtil/Resources.resx b/src/FileUtil/Resources.resx similarity index 100% rename from src/Ninja.FileUtil/Resources.resx rename to src/FileUtil/Resources.resx diff --git a/test/Ninja.FileUtil.Tests/Configuration/Delimiter.cs b/test/FileUtil.Tests/Configuration/Delimiter.cs similarity index 69% rename from test/Ninja.FileUtil.Tests/Configuration/Delimiter.cs rename to test/FileUtil.Tests/Configuration/Delimiter.cs index 659c292..16bdb0c 100644 --- a/test/Ninja.FileUtil.Tests/Configuration/Delimiter.cs +++ b/test/FileUtil.Tests/Configuration/Delimiter.cs @@ -1,6 +1,6 @@ -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; -namespace Ninja.FileUtil.Tests.Configuration +namespace FileUtil.Tests.Configuration { public class Delimiter : IDelimiter { diff --git a/test/Ninja.FileUtil.Tests/Configuration/LineHeaders.cs b/test/FileUtil.Tests/Configuration/LineHeaders.cs similarity index 82% rename from test/Ninja.FileUtil.Tests/Configuration/LineHeaders.cs rename to test/FileUtil.Tests/Configuration/LineHeaders.cs index 600c42d..e87fde3 100644 --- a/test/Ninja.FileUtil.Tests/Configuration/LineHeaders.cs +++ b/test/FileUtil.Tests/Configuration/LineHeaders.cs @@ -1,6 +1,6 @@ -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; -namespace Ninja.FileUtil.Tests.Configuration +namespace FileUtil.Tests.Configuration { public class LineHeaders : ILineHeaders { diff --git a/test/Ninja.FileUtil.Tests/Configuration/TestFullConfig.cs b/test/FileUtil.Tests/Configuration/TestFullConfig.cs similarity index 79% rename from test/Ninja.FileUtil.Tests/Configuration/TestFullConfig.cs rename to test/FileUtil.Tests/Configuration/TestFullConfig.cs index 9afb206..263d858 100644 --- a/test/Ninja.FileUtil.Tests/Configuration/TestFullConfig.cs +++ b/test/FileUtil.Tests/Configuration/TestFullConfig.cs @@ -1,6 +1,6 @@ -using Ninja.FileUtil.Configuration; +using FileUtil.Configuration; -namespace Ninja.FileUtil.Tests.Configuration +namespace FileUtil.Tests.Configuration { public class TestFullConfig : IParserSettings { diff --git a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/DataLine.cs b/test/FileUtil.Tests/Engine/MultiDelimited/DataLine.cs similarity index 66% rename from test/Ninja.FileUtil.Tests/Engine/MultiDelimited/DataLine.cs rename to test/FileUtil.Tests/Engine/MultiDelimited/DataLine.cs index 895e1b7..1cc5276 100644 --- a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/DataLine.cs +++ b/test/FileUtil.Tests/Engine/MultiDelimited/DataLine.cs @@ -1,9 +1,9 @@ -namespace Ninja.FileUtil.Tests.Engine.MultiDelimited +namespace FileUtil.Tests.Engine.MultiDelimited { public class DataLine : FileLine { [Column(0)] - public string Employee { get; set; } + public string Employee { get; set; } [Column(1)] public string Reference { get; set; } [Column(2)] diff --git a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs b/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs similarity index 90% rename from test/Ninja.FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs rename to test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs index 7bc24e3..e2fe434 100644 --- a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs +++ b/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs @@ -1,10 +1,9 @@ -using System; +using FileUtil.Configuration; +using FileUtil.Provider; using Moq; -using Ninja.FileUtil.Configuration; -using Ninja.FileUtil.Provider; using NUnit.Framework; -namespace Ninja.FileUtil.Tests.Engine.MultiDelimited +namespace FileUtil.Tests.Engine.MultiDelimited { [TestFixture] public class EngineFixture @@ -38,13 +37,13 @@ public void TestGetFilesForNoFileFromProviderShouldReturnEmptyCollection() [Test] public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() { - var date = new DateTime(2016, 10,22); + var date = new DateTime(2016, 10, 22); var fileMeta = new FileMeta { FileName = "name", FilePath = "path", FileSize = 1234, - Lines = new[] {$"H|{date.ToShortDateString()}|Employee Status", "D|John Walsh|456RT4|True", "F|1" } + Lines = new[] { $"H|{date.ToShortDateString()}|Employee Status", "D|John Walsh|456RT4|True", "F|1" } }; provider.Setup(x => x.GetFiles()).Returns(new[] { fileMeta }); @@ -64,8 +63,8 @@ public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() Assert.IsEmpty(parsedfiles[0].Header.Errors); Assert.That(parsedfiles[0].Header.Date, Is.EqualTo(date)); Assert.That(parsedfiles[0].Header.Name, Is.EqualTo("Employee Status")); - - + + Assert.IsAssignableFrom(parsedfiles[0].Data[0]); Assert.That(parsedfiles[0].Data[0].Index, Is.EqualTo(0)); @@ -75,7 +74,7 @@ public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() Assert.That(parsedfiles[0].Data[0].Employee, Is.EqualTo("John Walsh")); Assert.That(parsedfiles[0].Data[0].Reference, Is.EqualTo("456RT4")); Assert.That(parsedfiles[0].Data[0].InService, Is.EqualTo(true)); - + Assert.IsAssignableFrom(parsedfiles[0].Footer); Assert.That(parsedfiles[0].Footer.Index, Is.EqualTo(0)); diff --git a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs b/test/FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs similarity index 68% rename from test/Ninja.FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs rename to test/FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs index 42017d1..793f681 100644 --- a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs +++ b/test/FileUtil.Tests/Engine/MultiDelimited/FooterLine.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Tests.Engine.MultiDelimited +namespace FileUtil.Tests.Engine.MultiDelimited { public class FooterLine : FileLine { diff --git a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs b/test/FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs similarity index 71% rename from test/Ninja.FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs rename to test/FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs index 7ec8297..d153e3e 100644 --- a/test/Ninja.FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs +++ b/test/FileUtil.Tests/Engine/MultiDelimited/HeaderLine.cs @@ -1,6 +1,4 @@ -using System; - -namespace Ninja.FileUtil.Tests.Engine.MultiDelimited +namespace FileUtil.Tests.Engine.MultiDelimited { public class HeaderLine : FileLine { diff --git a/test/Ninja.FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs b/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs similarity index 90% rename from test/Ninja.FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs rename to test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs index 730f515..083e072 100644 --- a/test/Ninja.FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs +++ b/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs @@ -1,9 +1,9 @@ -using Moq; -using Ninja.FileUtil.Configuration; -using Ninja.FileUtil.Provider; +using FileUtil.Configuration; +using FileUtil.Provider; +using Moq; using NUnit.Framework; -namespace Ninja.FileUtil.Tests.Engine.SingleDelimited +namespace FileUtil.Tests.Engine.SingleDelimited { [TestFixture] public class EngineFixture @@ -27,7 +27,7 @@ public void Setup() [Test] public void TestGetFilesForNoFileFromProviderShouldReturnEmptyCollection() { - Assert.IsEmpty(engine.GetFiles()); + Assert.IsEmpty(engine.GetFiles()); } [Test] @@ -38,7 +38,7 @@ public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() FileName = "name", FilePath = "path", FileSize = 1234, - Lines = new[] {"Jack Marias|false", "Samuel Dias|true"} + Lines = new[] { "Jack Marias|false", "Samuel Dias|true" } }; provider.Setup(x => x.GetFiles()).Returns(new[] { fileMeta }); diff --git a/test/Ninja.FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs b/test/FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs similarity index 76% rename from test/Ninja.FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs rename to test/FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs index 53003ea..fe9bfbc 100644 --- a/test/Ninja.FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs +++ b/test/FileUtil.Tests/Engine/SingleDelimited/SingleLine.cs @@ -1,4 +1,4 @@ -namespace Ninja.FileUtil.Tests.Engine.SingleDelimited +namespace FileUtil.Tests.Engine.SingleDelimited { public class SingleLine : FileLine { diff --git a/test/Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj b/test/FileUtil.Tests/FileUtil.Tests.csproj similarity index 80% rename from test/Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj rename to test/FileUtil.Tests/FileUtil.Tests.csproj index 3983934..98d232a 100644 --- a/test/Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj +++ b/test/FileUtil.Tests/FileUtil.Tests.csproj @@ -8,6 +8,10 @@ false + + + + @@ -18,13 +22,13 @@ - + - + Always - + \ No newline at end of file diff --git a/test/Ninja.FileUtil.Tests/Parser/InvalidTestLine.cs b/test/FileUtil.Tests/Parser/InvalidTestLine.cs similarity index 72% rename from test/Ninja.FileUtil.Tests/Parser/InvalidTestLine.cs rename to test/FileUtil.Tests/Parser/InvalidTestLine.cs index 5ef2403..150c746 100644 --- a/test/Ninja.FileUtil.Tests/Parser/InvalidTestLine.cs +++ b/test/FileUtil.Tests/Parser/InvalidTestLine.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; - -namespace Ninja.FileUtil.Tests.Parser +namespace FileUtil.Tests.Parser { public class InvalidTestLine : IFileLine { diff --git a/test/FileUtil.Tests/Parser/LineParserFixture.cs b/test/FileUtil.Tests/Parser/LineParserFixture.cs new file mode 100644 index 0000000..947d5ff --- /dev/null +++ b/test/FileUtil.Tests/Parser/LineParserFixture.cs @@ -0,0 +1,108 @@ +using FileUtil.Configuration; +using FileUtil.Parser.Impl; +using Moq; +using NUnit.Framework; + +namespace FileUtil.Tests.Parser +{ + [TestFixture] + internal class LineParserFixture + { + private Mock configuration; + private LineParser parser; + + [SetUp] + public void Setup() + { + configuration = new Mock(); + + configuration.Setup(x => x.Delimiter.Value).Returns('|'); + configuration.Setup(x => x.LineHeaders.Header).Returns("H"); + configuration.Setup(x => x.LineHeaders.Data).Returns("D"); + configuration.Setup(x => x.LineHeaders.Footer).Returns("F"); + parser = new LineParser(configuration.Object); + } + + [Test] + public void TestParseForNullInputShouldReturnEmptyArray() + { + Assert.IsEmpty(parser.Parse(null)); + Assert.IsEmpty(parser.Parse(null, LineType.Data)); + } + + [Test] + public void TestParseWithLineHeaderInputShouldReturnCorrectlyParsedArray() + { + var lines = new[] + { + "D|Bob Marley|True", + "D|John Walsh|False" + }; + + var parsed = parser.Parse(lines, LineType.Data); + + Assert.That(parsed.Length, Is.EqualTo(2)); + + Assert.That(parsed[0].Name, Is.EqualTo("Bob Marley")); + Assert.That(parsed[0].IsMember, Is.EqualTo(true)); + Assert.That(parsed[0].Type, Is.EqualTo(LineType.Data)); + Assert.IsEmpty(parsed[0].Errors); + + Assert.That(parsed[1].Name, Is.EqualTo("John Walsh")); + Assert.That(parsed[1].IsMember, Is.EqualTo(false)); + Assert.That(parsed[1].Type, Is.EqualTo(LineType.Data)); + Assert.IsEmpty(parsed[1].Errors); + } + + [Test] + public void TestParseWithNoLineHeaderInputShouldReturnCorrectlyParsedArray() + { + var lines = new[] + { + "Bob Marley|True", + "John Walsh|False" + }; + var prsed = parser.Parse(lines); + + Assert.That(prsed.Length, Is.EqualTo(2)); + + Assert.That(prsed[0].Name, Is.EqualTo("Bob Marley")); + Assert.That(prsed[0].IsMember, Is.EqualTo(true)); + Assert.That(prsed[0].Type, Is.EqualTo(LineType.Data)); + Assert.IsEmpty(prsed[0].Errors); + + Assert.That(prsed[1].Name, Is.EqualTo("John Walsh")); + Assert.That(prsed[1].IsMember, Is.EqualTo(false)); + Assert.That(prsed[1].Type, Is.EqualTo(LineType.Data)); + Assert.IsEmpty(prsed[1].Errors); + } + + [TestCase("hbtrb", true)] + [TestCase("hbtrb|ej ef|fer|", true)] + [TestCase("H|hbtrb", false)] + [TestCase("H|hbtrb|ej ef|fer|rc |", true)] + public void TestParseForInvalidInputShouldReturnError(string line, bool hasLineType) + { + if (!hasLineType) + parser = new LineParser(configuration.Object); + + var result = hasLineType + ? parser.Parse(new[] { line }) + : parser.Parse(new[] { line }, LineType.Header); + + Assert.IsNotEmpty(result[0].Errors); + } + + [Test] + public void TestParseForInvalidFileLineWithNoColumnAttributesShouldReturnError() + { + var result = parser.Parse(new[] { "D|edndx|medmd" }, LineType.Data); + + Assert.IsNotEmpty(result[0].Errors); + + result = parser.Parse(new[] { "edndx|medmd" }); + + Assert.IsNotEmpty(result[0].Errors); + } + } +} \ No newline at end of file diff --git a/test/Ninja.FileUtil.Tests/Parser/TestLine.cs b/test/FileUtil.Tests/Parser/TestLine.cs similarity index 82% rename from test/Ninja.FileUtil.Tests/Parser/TestLine.cs rename to test/FileUtil.Tests/Parser/TestLine.cs index 5471e14..9fd78db 100644 --- a/test/Ninja.FileUtil.Tests/Parser/TestLine.cs +++ b/test/FileUtil.Tests/Parser/TestLine.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; - -namespace Ninja.FileUtil.Tests.Parser +namespace FileUtil.Tests.Parser { public class TestLine : IFileLine { @@ -30,6 +27,6 @@ public class HeaderLine : FileLine [Column(0)] public string Report { get; set; } [Column(1)] - public DateTime Date { get; set; } + public DateTime Date { get; set; } } } \ No newline at end of file diff --git a/test/Ninja.FileUtil.Tests/Provider/DefaultProviderFixture.cs b/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs similarity index 90% rename from test/Ninja.FileUtil.Tests/Provider/DefaultProviderFixture.cs rename to test/FileUtil.Tests/Provider/DefaultProviderFixture.cs index a497775..10e1d79 100644 --- a/test/Ninja.FileUtil.Tests/Provider/DefaultProviderFixture.cs +++ b/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs @@ -1,15 +1,13 @@ -using System.IO; -using System.Linq; +using FileUtil.Configuration; +using FileUtil.Provider; +using FileUtil.Provider.Impl; using Moq; -using Ninja.FileUtil.Configuration; -using Ninja.FileUtil.Provider; -using Ninja.FileUtil.Provider.Impl; using NUnit.Framework; -namespace Ninja.FileUtil.Tests.Provider +namespace FileUtil.Tests.Provider { [TestFixture] - class DefaultProviderFixture + internal class DefaultProviderFixture { private Mock settings; private Mock fileHelper; @@ -30,24 +28,23 @@ public void TestGetFilesForNoFilesShouldReturnEmptyFileCollection() fileHelper.Setup(x => x.GetPathLists(It.IsAny(), It.IsAny())) .Returns(Enumerable.Empty().ToArray()); - Assert.IsEmpty(provider.GetFiles()); + Assert.IsEmpty(provider.GetFiles()); } [Test] public void TestGetFilesForFileWhichDoesNotExistsShouldReturnEmptyFileCollection() { fileHelper.Setup(x => x.GetPathLists(It.IsAny(), It.IsAny())) - .Returns(new []{"path"}); + .Returns(new[] { "path" }); fileHelper.Setup(x => x.FileExists("path")).Returns(false); - + Assert.IsEmpty(provider.GetFiles()); } [Test] public void TestGetFilesForFileWhichExistsAndWithNoArchiveSettingShouldReturnFileCollectionWithFileInfo() { - fileHelper.Setup(x => x.GetPathLists(It.IsAny(), It.IsAny())) .Returns(new[] { filePath }); @@ -58,7 +55,6 @@ public void TestGetFilesForFileWhichExistsAndWithNoArchiveSettingShouldReturnFil fileHelper.Verify(x => x.TryDeleteFile(It.IsAny()), Times.Exactly(1)); fileHelper.Verify(x => x.TryMoveFile(It.IsAny(), It.IsAny()), Times.Never()); fileHelper.Verify(x => x.EnsureFolderExist(It.IsAny()), Times.Never()); - } [Test] @@ -82,7 +78,6 @@ public void TestGetFilesForFileWhichExistsAndWithArchiveSettingShouldReturnFileC fileHelper.Verify(x => x.TryDeleteFile(It.IsAny()), Times.Exactly(2)); fileHelper.Verify(x => x.TryMoveFile(It.IsAny(), It.IsAny()), Times.Exactly(1)); fileHelper.Verify(x => x.EnsureFolderExist(It.IsAny()), Times.Exactly(1)); - } } -} +} \ No newline at end of file diff --git a/test/Ninja.FileUtil.Tests/Provider/FileHelperFixture.cs b/test/FileUtil.Tests/Provider/FileHelperFixture.cs similarity index 72% rename from test/Ninja.FileUtil.Tests/Provider/FileHelperFixture.cs rename to test/FileUtil.Tests/Provider/FileHelperFixture.cs index ccfb26e..191a251 100644 --- a/test/Ninja.FileUtil.Tests/Provider/FileHelperFixture.cs +++ b/test/FileUtil.Tests/Provider/FileHelperFixture.cs @@ -1,21 +1,18 @@ -using System; -using System.IO; -using Ninja.FileUtil.Provider.Impl; +using FileUtil.Provider.Impl; using NUnit.Framework; -namespace Ninja.FileUtil.Tests.Provider +namespace FileUtil.Tests.Provider { - [TestFixture] - class FileHelperFixture + [TestFixture] + internal class FileHelperFixture { - private string filePath; + private string filePath; - private FileHelper fileHelper; + private FileHelper fileHelper; [SetUp] public void Setup() { - fileHelper = new FileHelper(); filePath = Path.Combine(Environment.CurrentDirectory, "TestFile.txt"); CreateFile(filePath); @@ -31,9 +28,7 @@ public void TestGetFilesForFileWhichDoesNotExistsShouldReturnEmptyFileCollection public void CreateFile(string path) { using (var sr = new StreamWriter(File.Open(path, FileMode.OpenOrCreate))) - { sr.Write("test one"); - } } } -} +} \ No newline at end of file diff --git a/test/Ninja.FileUtil.Tests/TestFile.txt b/test/FileUtil.Tests/TestFile.txt similarity index 100% rename from test/Ninja.FileUtil.Tests/TestFile.txt rename to test/FileUtil.Tests/TestFile.txt diff --git a/test/Ninja.FileUtil.Tests/Parser/LineParserFixture.cs b/test/Ninja.FileUtil.Tests/Parser/LineParserFixture.cs deleted file mode 100644 index b286c03..0000000 --- a/test/Ninja.FileUtil.Tests/Parser/LineParserFixture.cs +++ /dev/null @@ -1,107 +0,0 @@ -using Moq; -using Ninja.FileUtil.Configuration; -using Ninja.FileUtil.Parser.Impl; -using NUnit.Framework; - -namespace Ninja.FileUtil.Tests.Parser -{ - [TestFixture] - class LineParserFixture - { - private Mock configuration; - private LineParser parser; - - [SetUp] - public void Setup() - { - configuration = new Mock(); - - configuration.Setup(x => x.Delimiter.Value).Returns('|'); - configuration.Setup(x => x.LineHeaders.Header).Returns("H"); - configuration.Setup(x => x.LineHeaders.Data).Returns("D"); - configuration.Setup(x => x.LineHeaders.Footer).Returns("F"); - parser = new LineParser(configuration.Object); - } - - [Test] - public void TestParseForNullInputShouldReturnEmptyArray() - { - Assert.IsEmpty(parser.Parse(null)); - Assert.IsEmpty(parser.Parse(null, LineType.Data)); - } - - [Test] - public void TestParseWithLineHeaderInputShouldReturnCorrectlyParsedArray() - { - var lines = new [] - { - "D|Bob Marley|True", - "D|John Walsh|False" - }; - - var parsed = parser.Parse(lines, LineType.Data); - - Assert.That(parsed.Length, Is.EqualTo(2)); - - Assert.That(parsed[0].Name, Is.EqualTo("Bob Marley")); - Assert.That(parsed[0].IsMember, Is.EqualTo(true)); - Assert.That(parsed[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsed[0].Errors); - - Assert.That(parsed[1].Name, Is.EqualTo("John Walsh")); - Assert.That(parsed[1].IsMember, Is.EqualTo(false)); - Assert.That(parsed[1].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsed[1].Errors); - } - - [Test] - public void TestParseWithNoLineHeaderInputShouldReturnCorrectlyParsedArray() - { - var lines = new[] - { - "Bob Marley|True", - "John Walsh|False" - }; - var prsed = parser.Parse(lines); - - Assert.That(prsed.Length, Is.EqualTo(2)); - - Assert.That(prsed[0].Name, Is.EqualTo("Bob Marley")); - Assert.That(prsed[0].IsMember, Is.EqualTo(true)); - Assert.That(prsed[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(prsed[0].Errors); - - Assert.That(prsed[1].Name, Is.EqualTo("John Walsh")); - Assert.That(prsed[1].IsMember, Is.EqualTo(false)); - Assert.That(prsed[1].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(prsed[1].Errors); - } - - [TestCase("hbtrb", true)] - [TestCase("hbtrb|ej ef|fer|", true)] - [TestCase("H|hbtrb", false)] - [TestCase("H|hbtrb|ej ef|fer|rc |", true)] - public void TestParseForInvalidInputShouldReturnError(string line, bool hasLineType) - { - if (!hasLineType) parser = new LineParser(configuration.Object); - - var result = hasLineType - ? parser.Parse(new[] {line}) - : parser.Parse(new[] {line}, LineType.Header); - - Assert.IsNotEmpty(result[0].Errors); - } - - [Test] - public void TestParseForInvalidFileLineWithNoColumnAttributesShouldReturnError() - { - var result = parser.Parse(new[] { "D|edndx|medmd" }, LineType.Data); - - Assert.IsNotEmpty(result[0].Errors); - - result = parser.Parse(new[] { "edndx|medmd" }); - - Assert.IsNotEmpty(result[0].Errors); - } - } -} From 5bb82161f510cbc14315bc42dead50f577f1202d Mon Sep 17 00:00:00 2001 From: Ninja Date: Tue, 12 Nov 2024 14:29:39 +0000 Subject: [PATCH 2/8] - Update Github Actions --- FileUtil.Core.sln | 6 ++++-- GitVersion.yml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/FileUtil.Core.sln b/FileUtil.Core.sln index 1c311eb..8061fe0 100644 --- a/FileUtil.Core.sln +++ b/FileUtil.Core.sln @@ -11,8 +11,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FileUtil.Tests", "test\File EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{D549CC35-5318-45B0-ACCD-F28C543E482C}" ProjectSection(SolutionItems) = preProject - .github\workflows\CI-Build.yml = .github\workflows\CI-Build.yml - .github\workflows\codeql.yml = .github\workflows\codeql.yml + .github\workflows\Master-Build.yml = .github\workflows\Master-Build.yml + .github\workflows\CI-Package-Release.yml = .github\workflows\CI-Package-Release.yml + .github\workflows\Master-CodeQL.yml = .github\workflows\Master-CodeQL.yml + .github\workflows\PR-CodeQL.yml = .github\workflows\PR-CodeQL.yml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{8A1A1535-2928-4313-9AFC-9CA1892426E3}" diff --git a/GitVersion.yml b/GitVersion.yml index 2f85197..2ac57c8 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,4 +1,4 @@ -next-version: 3.0.0 +next-version: 4.0.0 tag-prefix: '[vV]' mode: ContinuousDeployment branches: From 5fc77da9f9689d890c8a82a93f71896d229789fa Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 21:27:11 +0000 Subject: [PATCH 3/8] - Upgrade to .Net 9.0 --- README.md | 14 ++++++------- src/FileUtil/FileUtil.csproj | 2 +- .../Engine/MultiDelimited/EngineFixture.cs | 21 +++++++++---------- .../Engine/SingleDelimited/EngineFixture.cs | 18 +++++++--------- test/FileUtil.Tests/FileUtil.Tests.csproj | 20 +++++++++++------- .../Parser/LineParserFixture.cs | 18 ++++++++-------- .../Provider/DefaultProviderFixture.cs | 8 +++---- 7 files changed, 52 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 6e11048..8bbdc41 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,13 @@ -# ninja FileUtil v3.0.0 -[![NuGet version](https://badge.fury.io/nu/FixedWidth.FileParser.svg)](https://badge.fury.io/nu/FixedWidth.FileParser) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md) +# ninja FileUtil.Core v4.0.0 +[![NuGet version](https://badge.fury.io/nu/FileUtil.Core.svg)](https://badge.fury.io/nu/FileUtil.Core) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md) [![Master-Build](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-Build.yml/badge.svg)](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-Build.yml) [![GitHub Release](https://img.shields.io/github/v/release/CodeShayk/FileUtil.Core?logo=github&sort=semver)](https://github.com/CodeShayk/FileUtil.Core/releases/latest) [![Master-CodeQL](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-CodeQL.yml/badge.svg)](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-CodeQL.yml) [![.Net 8.0](https://img.shields.io/badge/.Net-8.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) - -#### .Net Library to read from fixed width or delimiter separated file using strongly typed objects. ------------- +#### .Net Library to read from fixed width or delimiter separated file using strongly typed objects. + **Fixed Width or Delimiter Separated File** ------------------------------------------------------------------------ @@ -47,7 +46,7 @@ NuGet\Install-Package FixedWidth.FileParser ### ii. Developer Guide -Please read [Developer Guide](https://github.com/CodeShayk/FileUtil.Core/blob/master/DeveloperGuide.md) for details on how to implement ApiAggregator in your project. +Please read [Developer Guide](https://github.com/CodeShayk/FileUtil.Core/blob/master/DeveloperGuide.md) for details on how to implement FileUtil.Core in your project. ## Support @@ -58,9 +57,10 @@ If you are having problems, please let me know by [raising a new issue](https:// This project is licensed with the [MIT license](LICENSE). ## Version History -The main branch is now on .NET 8.0. The following previous versions are available: +The main branch is now on .NET 9.0. The following previous versions are available: | Version | Release Notes | | -------- | --------| +| [`v4.0.0`](https://github.com/CodeShayk/FileUtil.Core/tree/v4.0.0) | [Notes](https://github.com/CodeShayk/FileUtil.Core/releases/tag/v4.0.0) | | [`v3.0.0`](https://github.com/CodeShayk/FileUtil.Core/tree/v3.0.0) | [Notes](https://github.com/CodeShayk/FileUtil.Core/releases/tag/v3.0.0) | | [`v2.0.0`](https://github.com/CodeShayk/FileUtil.Core/tree/v2.0.0) | [Notes](https://github.com/CodeShayk/FileUtil.Core/releases/tag/v2.0.0) | | [`v1.0.0`](https://github.com/CodeShayk/FileUtil.Core/tree/v1.0.0) | [Notes](https://github.com/CodeShayk/FileUtil.Core/releases/tag/v1.0.0) | diff --git a/src/FileUtil/FileUtil.csproj b/src/FileUtil/FileUtil.csproj index 5d94199..db896bf 100644 --- a/src/FileUtil/FileUtil.csproj +++ b/src/FileUtil/FileUtil.csproj @@ -1,6 +1,6 @@ - net8.0 + net9.0 Public https://github.com/CodeShayk/FileUtil.Core csv tsv fixed-width delimiter-file delimiter file-parser file parser diff --git a/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs b/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs index e2fe434..cf50335 100644 --- a/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs +++ b/test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs @@ -1,4 +1,4 @@ -using FileUtil.Configuration; +using FileUtil.Configuration; using FileUtil.Provider; using Moq; using NUnit.Framework; @@ -31,7 +31,7 @@ public void Setup() [Test] public void TestGetFilesForNoFileFromProviderShouldReturnEmptyCollection() { - Assert.IsEmpty(engine.GetFiles()); + Assert.That(engine.GetFiles(), Is.Empty); } [Test] @@ -50,38 +50,37 @@ public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() var parsedfiles = engine.GetFiles(); - Assert.IsNotEmpty(parsedfiles); + Assert.That(parsedfiles, Is.Not.Empty); Assert.That(parsedfiles[0].FileMeta.FileName, Is.EqualTo(fileMeta.FileName)); Assert.That(parsedfiles[0].FileMeta.FilePath, Is.EqualTo(fileMeta.FilePath)); Assert.That(parsedfiles[0].FileMeta.FileSize, Is.EqualTo(fileMeta.FileSize)); Assert.That(parsedfiles[0].FileMeta.Lines, Is.EqualTo(fileMeta.Lines)); - Assert.IsAssignableFrom(parsedfiles[0].Header); + Assert.That(parsedfiles[0].Header, Is.AssignableFrom()); Assert.That(parsedfiles[0].Header.Index, Is.EqualTo(0)); Assert.That(parsedfiles[0].Header.Type, Is.EqualTo(LineType.Header)); - Assert.IsEmpty(parsedfiles[0].Header.Errors); + Assert.That(parsedfiles[0].Header.Errors, Is.Empty); Assert.That(parsedfiles[0].Header.Date, Is.EqualTo(date)); Assert.That(parsedfiles[0].Header.Name, Is.EqualTo("Employee Status")); - - Assert.IsAssignableFrom(parsedfiles[0].Data[0]); + Assert.That(parsedfiles[0].Data[0], Is.AssignableFrom()); Assert.That(parsedfiles[0].Data[0].Index, Is.EqualTo(0)); Assert.That(parsedfiles[0].Data[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsedfiles[0].Data[0].Errors); + Assert.That(parsedfiles[0].Data[0].Errors, Is.Empty); Assert.That(parsedfiles[0].Data[0].Employee, Is.EqualTo("John Walsh")); Assert.That(parsedfiles[0].Data[0].Reference, Is.EqualTo("456RT4")); Assert.That(parsedfiles[0].Data[0].InService, Is.EqualTo(true)); - Assert.IsAssignableFrom(parsedfiles[0].Footer); + Assert.That(parsedfiles[0].Footer, Is.AssignableFrom()); Assert.That(parsedfiles[0].Footer.Index, Is.EqualTo(0)); Assert.That(parsedfiles[0].Footer.Type, Is.EqualTo(LineType.Footer)); - Assert.IsEmpty(parsedfiles[0].Footer.Errors); + Assert.That(parsedfiles[0].Footer.Errors, Is.Empty); Assert.That(parsedfiles[0].Footer.TotalRecords, Is.EqualTo(1)); } } -} +} \ No newline at end of file diff --git a/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs b/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs index 083e072..b16811b 100644 --- a/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs +++ b/test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs @@ -1,4 +1,4 @@ -using FileUtil.Configuration; +using FileUtil.Configuration; using FileUtil.Provider; using Moq; using NUnit.Framework; @@ -27,7 +27,7 @@ public void Setup() [Test] public void TestGetFilesForNoFileFromProviderShouldReturnEmptyCollection() { - Assert.IsEmpty(engine.GetFiles()); + Assert.That(engine.GetFiles(), Is.Empty); } [Test] @@ -45,30 +45,28 @@ public void TestGetFilesForFileReceivedFromProviderShouldReturnEmptyCollection() var parsedfiles = engine.GetFiles(); - Assert.IsNotEmpty(parsedfiles); + Assert.That(parsedfiles, Is.Not.Empty); Assert.That(parsedfiles[0].FileMeta.FileName, Is.EqualTo(fileMeta.FileName)); Assert.That(parsedfiles[0].FileMeta.FilePath, Is.EqualTo(fileMeta.FilePath)); Assert.That(parsedfiles[0].FileMeta.FileSize, Is.EqualTo(fileMeta.FileSize)); Assert.That(parsedfiles[0].FileMeta.Lines, Is.EqualTo(fileMeta.Lines)); - - Assert.IsAssignableFrom(parsedfiles[0].Data[0]); - Assert.IsAssignableFrom(parsedfiles[0].Data[1]); + Assert.That(parsedfiles[0].Data[0], Is.AssignableFrom()); + Assert.That(parsedfiles[0].Data[1], Is.AssignableFrom()); Assert.That(parsedfiles[0].Data[0].Index, Is.EqualTo(0)); Assert.That(parsedfiles[0].Data[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsedfiles[0].Data[0].Errors); + Assert.That(parsedfiles[0].Data[0].Errors, Is.Empty); Assert.That(parsedfiles[0].Data[0].Name, Is.EqualTo("Jack Marias")); Assert.That(parsedfiles[0].Data[0].IsMember, Is.EqualTo(false)); - Assert.That(parsedfiles[0].Data[1].Index, Is.EqualTo(1)); Assert.That(parsedfiles[0].Data[1].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsedfiles[0].Data[0].Errors); + Assert.That(parsedfiles[0].Data[0].Errors, Is.Empty); Assert.That(parsedfiles[0].Data[1].Name, Is.EqualTo("Samuel Dias")); Assert.That(parsedfiles[0].Data[1].IsMember, Is.EqualTo(true)); } } -} +} \ No newline at end of file diff --git a/test/FileUtil.Tests/FileUtil.Tests.csproj b/test/FileUtil.Tests/FileUtil.Tests.csproj index 98d232a..6ba0f3a 100644 --- a/test/FileUtil.Tests/FileUtil.Tests.csproj +++ b/test/FileUtil.Tests/FileUtil.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable @@ -13,12 +13,18 @@ - - - - - - + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/test/FileUtil.Tests/Parser/LineParserFixture.cs b/test/FileUtil.Tests/Parser/LineParserFixture.cs index 947d5ff..8564ad1 100644 --- a/test/FileUtil.Tests/Parser/LineParserFixture.cs +++ b/test/FileUtil.Tests/Parser/LineParserFixture.cs @@ -26,8 +26,8 @@ public void Setup() [Test] public void TestParseForNullInputShouldReturnEmptyArray() { - Assert.IsEmpty(parser.Parse(null)); - Assert.IsEmpty(parser.Parse(null, LineType.Data)); + Assert.That(parser.Parse(null), Is.Empty); + Assert.That(parser.Parse(null, LineType.Data), Is.Empty); } [Test] @@ -46,12 +46,12 @@ public void TestParseWithLineHeaderInputShouldReturnCorrectlyParsedArray() Assert.That(parsed[0].Name, Is.EqualTo("Bob Marley")); Assert.That(parsed[0].IsMember, Is.EqualTo(true)); Assert.That(parsed[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsed[0].Errors); + Assert.That(parsed[0].Errors, Is.Empty); Assert.That(parsed[1].Name, Is.EqualTo("John Walsh")); Assert.That(parsed[1].IsMember, Is.EqualTo(false)); Assert.That(parsed[1].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(parsed[1].Errors); + Assert.That(parsed[1].Errors, Is.Empty); } [Test] @@ -69,12 +69,12 @@ public void TestParseWithNoLineHeaderInputShouldReturnCorrectlyParsedArray() Assert.That(prsed[0].Name, Is.EqualTo("Bob Marley")); Assert.That(prsed[0].IsMember, Is.EqualTo(true)); Assert.That(prsed[0].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(prsed[0].Errors); + Assert.That(prsed[0].Errors, Is.Empty); Assert.That(prsed[1].Name, Is.EqualTo("John Walsh")); Assert.That(prsed[1].IsMember, Is.EqualTo(false)); Assert.That(prsed[1].Type, Is.EqualTo(LineType.Data)); - Assert.IsEmpty(prsed[1].Errors); + Assert.That(prsed[1].Errors, Is.Empty); } [TestCase("hbtrb", true)] @@ -90,7 +90,7 @@ public void TestParseForInvalidInputShouldReturnError(string line, bool hasLineT ? parser.Parse(new[] { line }) : parser.Parse(new[] { line }, LineType.Header); - Assert.IsNotEmpty(result[0].Errors); + Assert.That(result[0].Errors, Is.Not.Empty); } [Test] @@ -98,11 +98,11 @@ public void TestParseForInvalidFileLineWithNoColumnAttributesShouldReturnError() { var result = parser.Parse(new[] { "D|edndx|medmd" }, LineType.Data); - Assert.IsNotEmpty(result[0].Errors); + Assert.That(result[0].Errors, Is.Not.Empty); result = parser.Parse(new[] { "edndx|medmd" }); - Assert.IsNotEmpty(result[0].Errors); + Assert.That(result[0].Errors, Is.Not.Empty); } } } \ No newline at end of file diff --git a/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs b/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs index 10e1d79..4b7b110 100644 --- a/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs +++ b/test/FileUtil.Tests/Provider/DefaultProviderFixture.cs @@ -28,7 +28,7 @@ public void TestGetFilesForNoFilesShouldReturnEmptyFileCollection() fileHelper.Setup(x => x.GetPathLists(It.IsAny(), It.IsAny())) .Returns(Enumerable.Empty().ToArray()); - Assert.IsEmpty(provider.GetFiles()); + Assert.That(provider.GetFiles(), Is.Empty); } [Test] @@ -39,7 +39,7 @@ public void TestGetFilesForFileWhichDoesNotExistsShouldReturnEmptyFileCollection fileHelper.Setup(x => x.FileExists("path")).Returns(false); - Assert.IsEmpty(provider.GetFiles()); + Assert.That(provider.GetFiles(), Is.Empty); } [Test] @@ -51,7 +51,7 @@ public void TestGetFilesForFileWhichExistsAndWithNoArchiveSettingShouldReturnFil fileHelper.Setup(x => x.FileExists(filePath)).Returns(true); fileHelper.Setup(x => x.ReadToLines(filePath)).Returns(new[] { "xyz, abc" }); - Assert.IsNotEmpty(provider.GetFiles()); + Assert.That(provider.GetFiles(), Is.Not.Empty); fileHelper.Verify(x => x.TryDeleteFile(It.IsAny()), Times.Exactly(1)); fileHelper.Verify(x => x.TryMoveFile(It.IsAny(), It.IsAny()), Times.Never()); fileHelper.Verify(x => x.EnsureFolderExist(It.IsAny()), Times.Never()); @@ -74,7 +74,7 @@ public void TestGetFilesForFileWhichExistsAndWithArchiveSettingShouldReturnFileC fileHelper.Setup(x => x.FileExists(filePath)).Returns(true); fileHelper.Setup(x => x.ReadToLines(filePath)).Returns(new[] { "xyz, abc" }); - Assert.IsNotEmpty(provider.GetFiles()); + Assert.That(provider.GetFiles(), Is.Not.Empty); fileHelper.Verify(x => x.TryDeleteFile(It.IsAny()), Times.Exactly(2)); fileHelper.Verify(x => x.TryMoveFile(It.IsAny(), It.IsAny()), Times.Exactly(1)); fileHelper.Verify(x => x.EnsureFolderExist(It.IsAny()), Times.Exactly(1)); From 900561c6662b0df990e49818043d915e9c32a05a Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 21:28:33 +0000 Subject: [PATCH 4/8] - Update .Net9.0 on Github Actions --- .github/workflows/CI-Package-Release.yml | 2 +- .github/workflows/Master-Build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI-Package-Release.yml b/.github/workflows/CI-Package-Release.yml index bef5b4c..9afb4d7 100644 --- a/.github/workflows/CI-Package-Release.yml +++ b/.github/workflows/CI-Package-Release.yml @@ -52,7 +52,7 @@ jobs: - name: Step-04 Install .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 6.0.x + dotnet-version: 9.0.x - name: Step-05 Restore dependencies run: dotnet restore diff --git a/.github/workflows/Master-Build.yml b/.github/workflows/Master-Build.yml index 32e7f77..cb1f876 100644 --- a/.github/workflows/Master-Build.yml +++ b/.github/workflows/Master-Build.yml @@ -18,7 +18,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 6.0.x + dotnet-version: 9.0.x - name: Restore dependencies run: dotnet restore - name: Build From 6f363aba4deddd6dbb3b9beff133650329bcf93a Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 21:33:50 +0000 Subject: [PATCH 5/8] - Fix nuget package name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8bbdc41..ab6a504 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # ninja FileUtil.Core v4.0.0 -[![NuGet version](https://badge.fury.io/nu/FileUtil.Core.svg)](https://badge.fury.io/nu/FileUtil.Core) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md) +[![NuGet version](https://badge.fury.io/nu/FixedWidth.FileParser.svg)](https://badge.fury.io/nu/FixedWidth.FileParser) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md) [![Master-Build](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-Build.yml/badge.svg)](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-Build.yml) [![GitHub Release](https://img.shields.io/github/v/release/CodeShayk/FileUtil.Core?logo=github&sort=semver)](https://github.com/CodeShayk/FileUtil.Core/releases/latest) [![Master-CodeQL](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-CodeQL.yml/badge.svg)](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-CodeQL.yml) From 44e86030c4903eb9910e8ae80ad1ecb0d6e9dcf4 Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 21:37:02 +0000 Subject: [PATCH 6/8] - Release v4.0.0 --- .github/workflows/Master-CodeQL.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Master-CodeQL.yml b/.github/workflows/Master-CodeQL.yml index adf920d..4360e22 100644 --- a/.github/workflows/Master-CodeQL.yml +++ b/.github/workflows/Master-CodeQL.yml @@ -8,7 +8,7 @@ # We have attempted to detect the languages in your repository. Please check # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. -# +# name: "Master-CodeQL" on: From 2a8fd3a9ac0178dfd62db945c79cb5be269ca8b2 Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 21:42:32 +0000 Subject: [PATCH 7/8] - Reelease v4.0.0 --- .github/workflows/CI-Package-Release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI-Package-Release.yml b/.github/workflows/CI-Package-Release.yml index 9afb4d7..725dd8d 100644 --- a/.github/workflows/CI-Package-Release.yml +++ b/.github/workflows/CI-Package-Release.yml @@ -101,7 +101,7 @@ jobs: - name: Step-04 Install .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Step-05 Restore dependencies run: dotnet restore From 639b23c87ab1c72e203fd648a023d3fe4c4cae89 Mon Sep 17 00:00:00 2001 From: Ninja Date: Fri, 22 Nov 2024 22:00:48 +0000 Subject: [PATCH 8/8] - Fix Tests --- test/FileUtil.Tests/FileUtil.Tests.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/FileUtil.Tests/FileUtil.Tests.csproj b/test/FileUtil.Tests/FileUtil.Tests.csproj index 6ba0f3a..ba4059b 100644 --- a/test/FileUtil.Tests/FileUtil.Tests.csproj +++ b/test/FileUtil.Tests/FileUtil.Tests.csproj @@ -32,9 +32,9 @@ - + Always - + \ No newline at end of file