2
0

FileSystemAbstraction_EnumerateFiles.cs 5.4 KB

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