diff --git a/TestHelpers.Tests/MockDirectoryInfoTests.cs b/TestHelpers.Tests/MockDirectoryInfoTests.cs index f20c64c3d..3f63b01b7 100644 --- a/TestHelpers.Tests/MockDirectoryInfoTests.cs +++ b/TestHelpers.Tests/MockDirectoryInfoTests.cs @@ -65,5 +65,36 @@ public void MockDirectoryInfo_FullName_ShouldReturnFullNameIncludingTrailingPath Assert.That(result, Is.EqualTo(@"c:\temp\folder\")); } + + [Test] + public void MockDirectoryInfo_GetFileSystemInfos_ShouldReturnBothDirectoriesAndFiles() + { + var fileSystem = new MockFileSystem(new Dictionary + { + { @"c:\temp\folder\file.txt", new MockFileData("Hello World") }, + { @"c:\temp\folder\folder", new MockDirectoryData() } + }); + + var directoryInfo = new MockDirectoryInfo(fileSystem, @"c:\temp\folder"); + var result = directoryInfo.GetFileSystemInfos(); + + Assert.That(result.Length, Is.EqualTo(2)); + } + + [Test] + public void MockDirectoryInfo_GetFileSystemInfos_ShouldReturnDirectoriesAndNamesWithSearchPattern() + { + var fileSystem = new MockFileSystem(new Dictionary + { + { @"c:\temp\folder\file.txt", new MockFileData("Hello World") }, + { @"c:\temp\folder\folder", new MockDirectoryData() }, + { @"c:\temp\folder\older", new MockDirectoryData() } + }); + + var directoryInfo = new MockDirectoryInfo(fileSystem, @"c:\temp\folder"); + var result = directoryInfo.GetFileSystemInfos("f*"); + + Assert.That(result.Length, Is.EqualTo(2)); + } } } \ No newline at end of file diff --git a/TestingHelpers/MockDirectoryInfo.cs b/TestingHelpers/MockDirectoryInfo.cs index 8bd8bb2bb..7ded5865d 100644 --- a/TestingHelpers/MockDirectoryInfo.cs +++ b/TestingHelpers/MockDirectoryInfo.cs @@ -189,12 +189,17 @@ FileInfoBase[] ConvertStringsToFiles(IEnumerable paths) public override FileSystemInfoBase[] GetFileSystemInfos() { - throw new NotImplementedException("This test helper hasn't been implemented yet. They are implemented on an as-needed basis. As it seems like you need it, now would be a great time to send us a pull request over at https://github.com/tathamoddie/System.IO.Abstractions. You know, because it's open source and all."); + return GetFileSystemInfos("*"); } public override FileSystemInfoBase[] GetFileSystemInfos(string searchPattern) { - throw new NotImplementedException("This test helper hasn't been implemented yet. They are implemented on an as-needed basis. As it seems like you need it, now would be a great time to send us a pull request over at https://github.com/tathamoddie/System.IO.Abstractions. You know, because it's open source and all."); + return GetFileSystemInfos(searchPattern, SearchOption.TopDirectoryOnly); + } + + internal FileSystemInfoBase[] GetFileSystemInfos(string searchPattern, SearchOption searchOption) + { + return this.GetDirectories(searchPattern, searchOption).OfType().Concat(this.GetFiles(searchPattern, searchOption)).ToArray(); } public override void MoveTo(string destDirName)