ProcessFilesTests.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using Xunit;
  4. namespace ProcessFilesTests
  5. {
  6. public class ProcessFilesTests
  7. {
  8. private readonly string testFolder = "./testFiles";
  9. private readonly string testFile = "./testFiles/test1.txt";
  10. private readonly List<string> expectedInSubFolder =
  11. [
  12. "test2.txt",
  13. "test3.txt"
  14. ];
  15. private readonly List<string> expectedInSubFolderMultipleExtensions = ["test.json"];
  16. private const string expectedInFolder = "test1.txt";
  17. public ProcessFilesTests()
  18. {
  19. expectedInSubFolder.Add(expectedInFolder);
  20. expectedInSubFolderMultipleExtensions.AddRange(expectedInSubFolder);
  21. }
  22. [Fact]
  23. public void ProcessFolderTest()
  24. {
  25. var result = string.Empty;
  26. void TestAction(string value)
  27. {
  28. result = Path.GetFileName(value);
  29. }
  30. var test = new ProcessFiles.ProcessFiles();
  31. var errors = test.Process([testFolder], "txt", TestAction);
  32. Assert.Empty(errors);
  33. Assert.Equal(expectedInFolder, result);
  34. }
  35. private static bool CheckResult(List<string> result, List<string> expected)
  36. {
  37. if (!result.Count.Equals(expected.Count))
  38. return false;
  39. foreach (var item in result)
  40. {
  41. if (!expected.Contains(item))
  42. return false;
  43. }
  44. return true;
  45. }
  46. [Fact]
  47. public void ProcessFolderRecursiveTest()
  48. {
  49. var result = new List<string>();
  50. void TestAction(string value)
  51. {
  52. result.Add(Path.GetFileName(value));
  53. }
  54. var test = new ProcessFiles.ProcessFiles();
  55. var errors = test.Process([testFolder], "txt", TestAction, true);
  56. Assert.Empty(errors);
  57. Assert.True(CheckResult(result, expectedInSubFolder));
  58. }
  59. [Fact]
  60. public void ProcessFolderAndFileTest()
  61. {
  62. var result = new List<string>();
  63. void TestAction(string value)
  64. {
  65. result.Add(Path.GetFileName(value));
  66. }
  67. var test = new ProcessFiles.ProcessFiles();
  68. var errors = test.Process(["./testFiles/subFolder", testFile], "txt", TestAction);
  69. Assert.Empty(errors);
  70. Assert.True(CheckResult(result, expectedInSubFolder));
  71. }
  72. [Fact]
  73. public void ProcessFileTest()
  74. {
  75. var result = string.Empty;
  76. void TestAction(string value)
  77. {
  78. result = Path.GetFileName(value);
  79. }
  80. var test = new ProcessFiles.ProcessFiles();
  81. var errors = test.Process([testFile], "txt", TestAction);
  82. Assert.Empty(errors);
  83. Assert.Equal(expectedInFolder, result);
  84. }
  85. [Fact]
  86. public void ProcessFileNotExistTest()
  87. {
  88. var result = string.Empty;
  89. void TestAction(string value)
  90. {
  91. result = value;
  92. }
  93. var test = new ProcessFiles.ProcessFiles();
  94. var errors = test.Process(["./testFiles/test.txt"], "txt", TestAction);
  95. Assert.NotEmpty(errors);
  96. Assert.Empty(result);
  97. }
  98. [Fact]
  99. public void ProcessFileNotMatchExtensionTest()
  100. {
  101. var result = string.Empty;
  102. void TestAction(string value)
  103. {
  104. result = value;
  105. }
  106. var test = new ProcessFiles.ProcessFiles();
  107. var errors = test.Process([testFile], "abc", TestAction);
  108. Assert.NotEmpty(errors);
  109. Assert.Empty(result);
  110. }
  111. [Fact]
  112. public void ProcessFolderRecursiveMultipleExtensionsTest()
  113. {
  114. var result = new List<string>();
  115. void TestAction(string value)
  116. {
  117. result.Add(Path.GetFileName(value));
  118. }
  119. var test = new ProcessFiles.ProcessFiles();
  120. var errors = test.Process([testFolder], ["txt", "json"], TestAction, true);
  121. Assert.Empty(errors);
  122. Assert.True(CheckResult(result, expectedInSubFolderMultipleExtensions));
  123. }
  124. }
  125. }