| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | using System;using System.IO;using System.Linq;using Renci.SshNet.Abstractions;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace Renci.SshNet.Tests.Abstractions{    [TestClass]    public class FileSystemAbstraction_EnumerateFiles    {        private string _temporaryDirectory;        [TestInitialize]        public void SetUp()        {            _temporaryDirectory = Path.GetTempFileName();            File.Delete(_temporaryDirectory);            Directory.CreateDirectory(_temporaryDirectory);        }        [TestCleanup]        public void TearDown()        {            if (_temporaryDirectory != null && Directory.Exists(_temporaryDirectory))            {                Directory.Delete(_temporaryDirectory, true);            }        }        [TestMethod]        public void ShouldThrowArgumentNullExceptionWhenDirectoryInfoIsNull()        {            const DirectoryInfo directoryInfo = null;            const string searchPattern = "*.xml";            try            {                FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);                Assert.Fail();            }            catch (ArgumentNullException ex)            {                Assert.IsNull(ex.InnerException);                Assert.AreEqual("directoryInfo", ex.ParamName);            }        }        [TestMethod]        public void ShouldThrowArgumentNullExceptionWhenSearchPatternIsNull()        {            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = null;            try            {                FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);                Assert.Fail();            }            catch (ArgumentNullException ex)            {                Assert.IsNull(ex.InnerException);                Assert.AreEqual("searchPattern", ex.ParamName);            }        }        [TestMethod]        public void ShouldThrowDirectoryNotFoundExceptionWhenDirectoryDoesNotExist()        {            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "*.xml";            Directory.Delete(_temporaryDirectory, true);            try            {                FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);                Assert.Fail();            }            catch (DirectoryNotFoundException)            {            }        }        [TestMethod]        public void ShouldReturnEmptyEnumerableWhenNoFilesExistInDirectory()        {            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "*.xml";            var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);            Assert.IsFalse(actual.GetEnumerator().MoveNext());        }        [TestMethod]        public void ShouldReturnEmptyEnumerableWhenNoFilesMatchSearchPatternExistInDirectory()        {            CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "*.xml";            var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);            Assert.IsFalse(actual.GetEnumerator().MoveNext());        }        [TestMethod]        public void ShouldReturnEmptyEnumerableWhenSearchPatternIsEmpty()        {            CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "";            var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern);            Assert.IsFalse(actual.GetEnumerator().MoveNext());        }        [TestMethod]        public void ShouldReturnAllFilesInDirectoryWhenSearchPatternIsAsterisk()        {            CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));            CreateFile(Path.Combine(_temporaryDirectory, "test.xml"));            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "*";            var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern).ToList();            Assert.AreEqual(2, actual.Count);            Assert.IsTrue(actual.Exists(p => p.Name == "test.txt"));            Assert.IsTrue(actual.Exists(p => p.Name == "test.xml"));        }        [TestMethod]        public void ShouldReturnOnlyReturnFilesFromTopLevelDirectory()        {            CreateFile(Path.Combine(_temporaryDirectory, "test.txt"));            CreateFile(Path.Combine(_temporaryDirectory, "test.xml"));            Directory.CreateDirectory(Path.Combine(_temporaryDirectory, "sub"));            CreateFile(Path.Combine(_temporaryDirectory, "sub", "test.csv"));            var directoryInfo = new DirectoryInfo(_temporaryDirectory);            const string searchPattern = "*";            var actual = FileSystemAbstraction.EnumerateFiles(directoryInfo, searchPattern).ToList();            Assert.AreEqual(2, actual.Count);            Assert.IsTrue(actual.Exists(p => p.Name == "test.txt"));            Assert.IsTrue(actual.Exists(p => p.Name == "test.xml"));        }        private static void CreateFile(string fileName)        {            var fs = File.Create(fileName);            fs.Dispose();        }    }}
 |