From 758b88670e68a06509acabbadce53d5367c2899f Mon Sep 17 00:00:00 2001 From: Manuel Pfemeter Date: Sat, 5 Apr 2014 11:01:30 +0200 Subject: [PATCH] adapted pattern to find directories added/modified tests --- TestHelpers.Tests/MockDirectoryTests.cs | 62 +++++++++++++++++++++---- TestingHelpers/MockDirectory.cs | 2 +- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/TestHelpers.Tests/MockDirectoryTests.cs b/TestHelpers.Tests/MockDirectoryTests.cs index 8dc11c659..a0e94b3f0 100644 --- a/TestHelpers.Tests/MockDirectoryTests.cs +++ b/TestHelpers.Tests/MockDirectoryTests.cs @@ -504,6 +504,19 @@ public void MockDirectory_GetFileSystemEntries_Returns_Files_And_Directories() Assert.AreEqual(testPath, entries.First()); } + [Test] + public void MockDirectory_GetFiles_ShouldThrowDirectoryNotFoundException_IfPathDoesNotExists() + { + // Arrange + var fileSystem = new MockFileSystem(); + + // Act + TestDelegate action = () => fileSystem.Directory.GetFiles(@"c:\Foo", "*a.txt"); + + // Assert + Assert.Throws(action); + } + [Test] public void MockDirectory_GetFiles_Returns_Files() { @@ -569,6 +582,42 @@ public void MockDirectory_GetDirectories_Returns_Child_Directories() Assert.IsTrue(directories.Contains(@"A:\folder1\folder4\")); } + [Test] + public void MockDirectory_GetDirectories_WithTopDirectories_ShouldOnlyReturnTopDirectories() + { + // Arrange + var fileSystem = new MockFileSystem(); + fileSystem.AddDirectory(@"C:\Folder\.foo\"); + fileSystem.AddDirectory(@"C:\Folder\foo"); + fileSystem.AddDirectory(@"C:\Folder\foo.foo"); + fileSystem.AddDirectory(@"C:\Folder\.foo\.foo"); + fileSystem.AddFile(@"C:\Folder\.foo\bar", new MockFileData(string.Empty)); + + // Act + var actualResult = fileSystem.Directory.GetDirectories(@"c:\Folder\", "*.foo"); + + // Assert + Assert.That(actualResult, Is.EquivalentTo(new []{@"C:\Folder\.foo\", @"C:\Folder\foo.foo\"})); + } + + [Test] + public void MockDirectory_GetDirectories_WithAllDirectories_ShouldReturnsAllMatchingSubFolders() + { + // Arrange + var fileSystem = new MockFileSystem(); + fileSystem.AddDirectory(@"C:\Folder\.foo\"); + fileSystem.AddDirectory(@"C:\Folder\foo"); + fileSystem.AddDirectory(@"C:\Folder\foo.foo"); + fileSystem.AddDirectory(@"C:\Folder\.foo\.foo"); + fileSystem.AddFile(@"C:\Folder\.foo\bar", new MockFileData(string.Empty)); + + // Act + var actualResult = fileSystem.Directory.GetDirectories(@"c:\Folder\", "*.foo", SearchOption.AllDirectories); + + // Assert + Assert.That(actualResult, Is.EquivalentTo(new[] { @"C:\Folder\.foo\", @"C:\Folder\foo.foo\", @"C:\Folder\.foo\.foo\" })); + } + [Test] public void MockDirectory_GetDirectories_ShouldThrowWhenPathIsNotMocked() { @@ -587,15 +636,10 @@ public void MockDirectory_GetDirectories_ShouldThrowWhenPathIsNotMocked() }); // Act - try - { - fileSystem.Directory.GetDirectories(@"c:\d"); - // Assert - Assert.Fail(); - } - catch (DirectoryNotFoundException) - { - } + TestDelegate action = () => fileSystem.Directory.GetDirectories(@"c:\d"); + + // Assert + Assert.Throws(action); } [Test] diff --git a/TestingHelpers/MockDirectory.cs b/TestingHelpers/MockDirectory.cs index f3c1b84f5..85fa01121 100644 --- a/TestingHelpers/MockDirectory.cs +++ b/TestingHelpers/MockDirectory.cs @@ -180,7 +180,7 @@ private string[] GetFilesInternal(IEnumerable files, string path, string var pathPattern = string.Format( CultureInfo.InvariantCulture, - @"(?i:^{0}{1}{2}$)", + @"(?i:^{0}{1}{2}(?:\\?)$)", Regex.Escape(path), searchOption == SearchOption.AllDirectories ? allDirectoriesPattern : string.Empty, fileNamePattern);