diff --git a/.github/workflows/CI-Package-Release.yml b/.github/workflows/CI-Package-Release.yml
index bef5b4c..725dd8d 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
@@ -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
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
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:
diff --git a/Ninja.FileUtil.Core.sln b/FileUtil.Core.sln
similarity index 81%
rename from Ninja.FileUtil.Core.sln
rename to FileUtil.Core.sln
index 757a97e..8061fe0 100644
--- a/Ninja.FileUtil.Core.sln
+++ b/FileUtil.Core.sln
@@ -5,14 +5,16 @@ 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
- .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:
diff --git a/README.md b/README.md
index 6e11048..ab6a504 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,13 @@
-#
FileUtil v3.0.0
-[](https://badge.fury.io/nu/FixedWidth.FileParser)
-[](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md)
+#
FileUtil.Core v4.0.0
+[](https://badge.fury.io/nu/FixedWidth.FileParser) [](https://github.com/CodeShayk/FileUtil.Core/blob/master/LICENSE.md)
[](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-Build.yml)
[](https://github.com/CodeShayk/FileUtil.Core/releases/latest)
[](https://github.com/CodeShayk/FileUtil.Core/actions/workflows/Master-CodeQL.yml)
[](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/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 68%
rename from src/Ninja.FileUtil/Ninja.FileUtil.csproj
rename to src/FileUtil/FileUtil.csproj
index 3ebedd1..db896bf 100644
--- a/src/Ninja.FileUtil/Ninja.FileUtil.csproj
+++ b/src/FileUtil/FileUtil.csproj
@@ -1,26 +1,31 @@
- net8.0
+ net9.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 76%
rename from test/Ninja.FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs
rename to test/FileUtil.Tests/Engine/MultiDelimited/EngineFixture.cs
index 7bc24e3..cf50335 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
@@ -32,57 +31,56 @@ public void Setup()
[Test]
public void TestGetFilesForNoFileFromProviderShouldReturnEmptyCollection()
{
- Assert.IsEmpty(engine.GetFiles());
+ Assert.That(engine.GetFiles(), Is.Empty);
}
[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 });
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/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 78%
rename from test/Ninja.FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs
rename to test/FileUtil.Tests/Engine/SingleDelimited/EngineFixture.cs
index 730f515..b16811b 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.That(engine.GetFiles(), Is.Empty);
}
[Test]
@@ -38,37 +38,35 @@ 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 });
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/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/FileUtil.Tests/FileUtil.Tests.csproj b/test/FileUtil.Tests/FileUtil.Tests.csproj
new file mode 100644
index 0000000..ba4059b
--- /dev/null
+++ b/test/FileUtil.Tests/FileUtil.Tests.csproj
@@ -0,0 +1,40 @@
+
+
+
+ net9.0
+ enable
+ enable
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+ 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..8564ad1
--- /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.That(parser.Parse(null), Is.Empty);
+ Assert.That(parser.Parse(null, LineType.Data), Is.Empty);
+ }
+
+ [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.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.That(parsed[1].Errors, Is.Empty);
+ }
+
+ [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.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.That(prsed[1].Errors, Is.Empty);
+ }
+
+ [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.That(result[0].Errors, Is.Not.Empty);
+ }
+
+ [Test]
+ public void TestParseForInvalidFileLineWithNoColumnAttributesShouldReturnError()
+ {
+ var result = parser.Parse(new[] { "D|edndx|medmd" }, LineType.Data);
+
+ Assert.That(result[0].Errors, Is.Not.Empty);
+
+ result = parser.Parse(new[] { "edndx|medmd" });
+
+ Assert.That(result[0].Errors, Is.Not.Empty);
+ }
+ }
+}
\ 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 85%
rename from test/Ninja.FileUtil.Tests/Provider/DefaultProviderFixture.cs
rename to test/FileUtil.Tests/Provider/DefaultProviderFixture.cs
index a497775..4b7b110 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,35 +28,33 @@ 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]
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());
+
+ Assert.That(provider.GetFiles(), Is.Empty);
}
[Test]
public void TestGetFilesForFileWhichExistsAndWithNoArchiveSettingShouldReturnFileCollectionWithFileInfo()
{
-
fileHelper.Setup(x => x.GetPathLists(It.IsAny(), It.IsAny()))
.Returns(new[] { filePath });
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());
-
}
[Test]
@@ -78,11 +74,10 @@ 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));
-
}
}
-}
+}
\ 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/Ninja.FileUtil.Tests.csproj b/test/Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj
deleted file mode 100644
index 3983934..0000000
--- a/test/Ninja.FileUtil.Tests/Ninja.FileUtil.Tests.csproj
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- net8.0
- enable
- enable
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Always
-
-
-
-
\ No newline at end of file
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);
- }
- }
-}
| |