|  | @@ -4,141 +4,153 @@ using System.Linq;
 | 
	
		
			
				|  |  |  using Xunit;
 | 
	
		
			
				|  |  |  using ProcessFiles;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -namespace ProcessFilesTests
 | 
	
		
			
				|  |  | +namespace ProcessFilesTests;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class ProcessFilesTests
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    public class ProcessFilesTests
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -        private const string TestFolder = "./testFiles";
 | 
	
		
			
				|  |  | -        private const string TestFile = "./testFiles/test1.txt";
 | 
	
		
			
				|  |  | +    private const string TestFolder = "./testFiles";
 | 
	
		
			
				|  |  | +    private const string TestFile = "./testFiles/test1.txt";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private const string ExpectedInFolder = "test1.txt";
 | 
	
		
			
				|  |  | +    private const string ExpectedInFolder = "test1.txt";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private readonly List<string> expectedInSubFolder =
 | 
	
		
			
				|  |  | -        [
 | 
	
		
			
				|  |  | -            ExpectedInFolder,
 | 
	
		
			
				|  |  | -            "test2.txt",
 | 
	
		
			
				|  |  | -            "test3.txt"
 | 
	
		
			
				|  |  | -        ];
 | 
	
		
			
				|  |  | +    private readonly List<string> expectedInSubFolder =
 | 
	
		
			
				|  |  | +    [
 | 
	
		
			
				|  |  | +        ExpectedInFolder,
 | 
	
		
			
				|  |  | +        "test2.txt",
 | 
	
		
			
				|  |  | +        "test3.txt"
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private readonly List<string> expectedInSubFolderMultipleExtensions =
 | 
	
		
			
				|  |  | -        [
 | 
	
		
			
				|  |  | -            "test.json"
 | 
	
		
			
				|  |  | -        ];
 | 
	
		
			
				|  |  | +    private readonly List<string> expectedInSubFolderMultipleExtensions =
 | 
	
		
			
				|  |  | +    [
 | 
	
		
			
				|  |  | +        "test.json"
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public ProcessFilesTests()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        expectedInSubFolderMultipleExtensions.AddRange(expectedInSubFolder);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        public ProcessFilesTests()
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            expectedInSubFolderMultipleExtensions.AddRange(expectedInSubFolder);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFolderTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = string.Empty;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFolderTest()
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process([TestFolder], "txt", TestAction);
 | 
	
		
			
				|  |  | +        Assert.Empty(errors);
 | 
	
		
			
				|  |  | +        Assert.Equal(ExpectedInFolder, result);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = string.Empty;
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result = Path.GetFileName(value);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process([TestFolder], "txt", TestAction);
 | 
	
		
			
				|  |  | -            Assert.Empty(errors);
 | 
	
		
			
				|  |  | -            Assert.Equal(ExpectedInFolder, result);
 | 
	
		
			
				|  |  | +            result = Path.GetFileName(value);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private static bool CheckResult(List<string> result, List<string> expected)
 | 
	
		
			
				|  |  | +    private static bool CheckResult(List<string> result, List<string> expected)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return result.Count.Equals(expected.Count) && result.All(expected.Contains);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFolderRecursiveTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = new List<string>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process([TestFolder], "txt", TestAction, true);
 | 
	
		
			
				|  |  | +        Assert.Empty(errors);
 | 
	
		
			
				|  |  | +        Assert.True(CheckResult(result, expectedInSubFolder));
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            return result.Count.Equals(expected.Count) && result.All(expected.Contains);
 | 
	
		
			
				|  |  | +            result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFolderAndFileTest()
 | 
	
		
			
				|  |  | +    {   
 | 
	
		
			
				|  |  | +        var result = new List<string>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFolderRecursiveTest()
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process(["./testFiles/subFolder", TestFile], "txt", TestAction);
 | 
	
		
			
				|  |  | +        Assert.Empty(errors);
 | 
	
		
			
				|  |  | +        Assert.True(CheckResult(result, expectedInSubFolder));
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = new List<string>();
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process([TestFolder], "txt", TestAction, true);
 | 
	
		
			
				|  |  | -            Assert.Empty(errors);
 | 
	
		
			
				|  |  | -            Assert.True(CheckResult(result, expectedInSubFolder));
 | 
	
		
			
				|  |  | +            result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFolderAndFileTest()
 | 
	
		
			
				|  |  | -        {   
 | 
	
		
			
				|  |  | -            var result = new List<string>();
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process(["./testFiles/subFolder", TestFile], "txt", TestAction);
 | 
	
		
			
				|  |  | -            Assert.Empty(errors);
 | 
	
		
			
				|  |  | -            Assert.True(CheckResult(result, expectedInSubFolder));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFileTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = string.Empty;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process([TestFile], "txt", TestAction);
 | 
	
		
			
				|  |  | +        Assert.Empty(errors);
 | 
	
		
			
				|  |  | +        Assert.Equal(ExpectedInFolder, result);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFileTest()
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = string.Empty;
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result = Path.GetFileName(value);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process([TestFile], "txt", TestAction);
 | 
	
		
			
				|  |  | -            Assert.Empty(errors);
 | 
	
		
			
				|  |  | -            Assert.Equal(ExpectedInFolder, result);
 | 
	
		
			
				|  |  | +            result = Path.GetFileName(value);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFileNotExistTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = string.Empty;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process(["./testFiles/test.txt"], "txt", TestAction);
 | 
	
		
			
				|  |  | +        Assert.NotEmpty(errors);
 | 
	
		
			
				|  |  | +        Assert.Empty(result);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFileNotExistTest()
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = string.Empty;
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result = value;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process(["./testFiles/test.txt"], "txt", TestAction);
 | 
	
		
			
				|  |  | -            Assert.NotEmpty(errors);
 | 
	
		
			
				|  |  | -            Assert.Empty(result);
 | 
	
		
			
				|  |  | +            result = value;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFileNotMatchExtensionTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = string.Empty;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process([TestFile], "abc", TestAction);
 | 
	
		
			
				|  |  | +        Assert.NotEmpty(errors);
 | 
	
		
			
				|  |  | +        Assert.Empty(result);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFileNotMatchExtensionTest()
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = string.Empty;
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result = value;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process([TestFile], "abc", TestAction);
 | 
	
		
			
				|  |  | -            Assert.NotEmpty(errors);
 | 
	
		
			
				|  |  | -            Assert.Empty(result);
 | 
	
		
			
				|  |  | +            result = value;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Fact]
 | 
	
		
			
				|  |  | +    public void ProcessFolderRecursiveMultipleExtensionsTest()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var result = new List<string>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var test = new FileProcessing();
 | 
	
		
			
				|  |  | +        var errors = test.Process([TestFolder], ["txt", "json"], TestAction, true);
 | 
	
		
			
				|  |  | +        Assert.Empty(errors);
 | 
	
		
			
				|  |  | +        Assert.True(CheckResult(result, expectedInSubFolderMultipleExtensions));
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        [Fact]
 | 
	
		
			
				|  |  | -        public void ProcessFolderRecursiveMultipleExtensionsTest()
 | 
	
		
			
				|  |  | +        void TestAction(string value)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var result = new List<string>();
 | 
	
		
			
				|  |  | -            void TestAction(string value)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var test = new FileProcessing();
 | 
	
		
			
				|  |  | -            var errors = test.Process([TestFolder], ["txt", "json"], TestAction, true);
 | 
	
		
			
				|  |  | -            Assert.Empty(errors);
 | 
	
		
			
				|  |  | -            Assert.True(CheckResult(result, expectedInSubFolderMultipleExtensions));
 | 
	
		
			
				|  |  | +            result.Add(Path.GetFileName(value));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +}
 |