Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/System.IO.Abstractions/IDirectoryInfoExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
namespace System.IO.Abstractions
{
public static class IDirectoryInfoExtensions
{
/// <summary>
/// Get an <see cref="IDirectoryInfo"/> for the specified sub-directory <paramref name="name"/>
/// </summary>
/// <param name="info"></param>
/// <param name="name">Sub-directory name (ex. "test")</param>
/// <returns>An <see cref="IDirectoryInfo"/> for the specified sub-directory</returns>
public static IDirectoryInfo SubDirectory(this IDirectoryInfo info, string name)
{
return info.FileSystem.DirectoryInfo.FromDirectoryName(info.FileSystem.Path.Combine(info.FullName, name));
}

/// <summary>
/// Get an <see cref="IFileInfo"/> for the specified file <paramref name="name"/>
/// </summary>
/// <param name="info"></param>
/// <param name="name">File name (ex. "test.txt")</param>
/// <returns>An <see cref="IFileInfo"/> for the specified file</returns>
public static IFileInfo File(this IDirectoryInfo info, string name)
{
return info.FileSystem.FileInfo.FromFileName(info.FileSystem.Path.Combine(info.FullName, name));
}
}
}
61 changes: 61 additions & 0 deletions tests/System.IO.Abstractions.Tests/DirectoryInfoExtensionsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using NUnit.Framework;

namespace System.IO.Abstractions.Tests
{
[TestFixture]
public class DirectoryInfoExtensionsTests
{
[Test]
public void SubDirectory_Extension_Test()
{
//arrange
var fs = new FileSystem();
var current = fs.DirectoryInfo.FromDirectoryName(fs.Directory.GetCurrentDirectory());
var guid = Guid.NewGuid().ToString();
var expectedPath = fs.Path.Combine(current.FullName, guid);

//make sure directory doesn't exists
Assert.IsFalse(fs.Directory.Exists(expectedPath));

//create directory
var created = current.SubDirectory(guid);
created.Create();

//assert it exists
Assert.IsTrue(fs.Directory.Exists(expectedPath));
Assert.AreEqual(expectedPath, created.FullName);

//delete directory
created.Delete();
Assert.IsFalse(fs.Directory.Exists(expectedPath));
}

[Test]
public void File_Extension_Test()
{
//arrange
var fs = new FileSystem();
var current = fs.DirectoryInfo.FromDirectoryName(fs.Directory.GetCurrentDirectory());
var guid = Guid.NewGuid().ToString();
var expectedPath = fs.Path.Combine(current.FullName, guid);

//make sure file doesn't exists
Assert.IsFalse(fs.File.Exists(expectedPath));

//create file
var created = current.File(guid);
using (var stream = created.Create())
{
stream.Dispose();
}

//assert it exists
Assert.IsTrue(fs.File.Exists(expectedPath));
Assert.AreEqual(expectedPath, created.FullName);

//delete file
created.Delete();
Assert.IsFalse(fs.File.Exists(expectedPath));
}
}
}