FileSystemAbstraction_EnumerateFiles.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using Renci.SshNet.Abstractions;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. namespace Renci.SshNet.Tests.Abstractions
  7. {
  8. [TestClass]
  9. public class FileSystemAbstraction_EnumerateFiles
  10. {
  11. private string _temporaryDirectory;
  12. [TestInitialize]
  13. public void SetUp()
  14. {
  15. _temporaryDirectory = Path.GetTempFileName();
  16. File.Delete(_temporaryDirectory);
  17. Directory.CreateDirectory(_temporaryDirectory);
  18. }
  19. [TestCleanup]
  20. public void TearDown()
  21. {
  22. if (_temporaryDirectory != null && Directory.Exists(_temporaryDirectory))
  23. {
  24. Directory.Delete(_temporaryDirectory, true);
  25. }
  26. }
  27. [TestMethod]
  28. public void ShouldThrowArgumentNullExceptionWhenDirectoryInfoIsNull()
  29. {
  30. const DirectoryInfo directoryInfo = null;
  31. const string searchPattern = "*.xml";
  32. try
  33. {
  34. FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  35. Assert.Fail();
  36. }
  37. catch (ArgumentNullException ex)
  38. {
  39. Assert.IsNull(ex.InnerException);
  40. Assert.AreEqual("directoryInfo", ex.ParamName);
  41. }
  42. }
  43. [TestMethod]
  44. public void ShouldThrowArgumentNullExceptionWhenSearchPatternIsNull()
  45. {
  46. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  47. const string searchPattern = null;
  48. try
  49. {
  50. FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  51. Assert.Fail();
  52. }
  53. catch (ArgumentNullException ex)
  54. {
  55. Assert.IsNull(ex.InnerException);
  56. Assert.AreEqual("searchPattern", ex.ParamName);
  57. }
  58. }
  59. [TestMethod]
  60. public void ShouldThrowDirectoryNotFoundExceptionWhenDirectoryDoesNotExist()
  61. {
  62. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  63. const string searchPattern = "*.xml";
  64. Directory.Delete(_temporaryDirectory, true);
  65. try
  66. {
  67. FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  68. Assert.Fail();
  69. }
  70. catch (DirectoryNotFoundException)
  71. {
  72. }
  73. }
  74. [TestMethod]
  75. public void ShouldReturnEmptyEnumerableWhenNoFilesExistInDirectory()
  76. {
  77. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  78. const string searchPattern = "*.xml";
  79. var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  80. Assert.IsFalse(actual.GetEnumerator().MoveNext());
  81. }
  82. [TestMethod]
  83. public void ShouldReturnEmptyEnumerableWhenNoFilesMatchSearchPatternExistInDirectory()
  84. {
  85. CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));
  86. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  87. const string searchPattern = "*.xml";
  88. var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  89. Assert.IsFalse(actual.GetEnumerator().MoveNext());
  90. }
  91. [TestMethod]
  92. public void ShouldReturnEmptyEnumerableWhenSearchPatternIsEmpty()
  93. {
  94. CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));
  95. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  96. const string searchPattern = "";
  97. var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);
  98. Assert.IsFalse(actual.GetEnumerator().MoveNext());
  99. }
  100. [TestMethod]
  101. public void ShouldReturnAllFilesInDirectoryWhenSearchPatternIsAsterisk()
  102. {
  103. CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));
  104. CreateFile(Path.Combine(_temporaryDirectory, "test.xml"));
  105. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  106. const string searchPattern = "*";
  107. var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern).ToList();
  108. Assert.AreEqual(2, actual.Count);
  109. Assert.IsTrue(actual.Exists(p => p.Name == "test.txt"));
  110. Assert.IsTrue(actual.Exists(p => p.Name == "test.xml"));
  111. }
  112. [TestMethod]
  113. public void ShouldReturnOnlyReturnFilesFromTopLevelDirectory()
  114. {
  115. CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));
  116. CreateFile(Path.Combine(_temporaryDirectory, "test.xml"));
  117. Directory.CreateDirectory(Path.Combine(_temporaryDirectory, "sub"));
  118. CreateFile(Path.Combine(_temporaryDirectory, "sub", "test.csv"));
  119. var directoryInfo = new DirectoryInfo(_temporaryDirectory);
  120. const string searchPattern = "*";
  121. var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern).ToList();
  122. Assert.AreEqual(2, actual.Count);
  123. Assert.IsTrue(actual.Exists(p => p.Name == "test.txt"));
  124. Assert.IsTrue(actual.Exists(p => p.Name == "test.xml"));
  125. }
  126. private static void CreateFile(string fileName)
  127. {
  128. var fs = File.Create(fileName);
  129. fs.Dispose();
  130. }
  131. }
  132. }