Skip to content

Commit 565a75e

Browse files
author
Jens Weiermann
committed
Added IFile and IDirectory interfaces
1 parent 8fcbcdc commit 565a75e

10 files changed

Lines changed: 142 additions & 14 deletions

File tree

System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryArgumentPathTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace System.IO.Abstractions.TestingHelpers.Tests
66
{
77
public class MockDirectoryArgumentPathTests
88
{
9-
private static IEnumerable<Action<DirectoryBase>> GetFileSystemActionsForArgumentNullException()
9+
private static IEnumerable<Action<IDirectory>> GetFileSystemActionsForArgumentNullException()
1010
{
1111
yield return ds => ds.Delete(null);
1212
yield return ds => ds.Delete(null, true);
@@ -26,7 +26,7 @@ private static IEnumerable<Action<DirectoryBase>> GetFileSystemActionsForArgumen
2626
}
2727

2828
[TestCaseSource("GetFileSystemActionsForArgumentNullException")]
29-
public void Operations_ShouldThrowArgumentNullExceptionIfPathIsNull(Action<DirectoryBase> action)
29+
public void Operations_ShouldThrowArgumentNullExceptionIfPathIsNull(Action<IDirectory> action)
3030
{
3131
// Arrange
3232
var fileSystem = new MockFileSystem();

System.IO.Abstractions.TestingHelpers.Tests/MockFileArgumentPathTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace System.IO.Abstractions.TestingHelpers.Tests
77
{
88
public class MockFileArgumentPathTests
99
{
10-
private static IEnumerable<Action<FileBase>> GetFileSystemActionsForArgumentNullException()
10+
private static IEnumerable<Action<IFile>> GetFileSystemActionsForArgumentNullException()
1111
{
1212
yield return fs => fs.AppendAllLines(null, new[] { "does not matter" });
1313
yield return fs => fs.AppendAllLines(null, new[] { "does not matter" }, Encoding.ASCII);
@@ -57,7 +57,7 @@ private static IEnumerable<Action<FileBase>> GetFileSystemActionsForArgumentNull
5757
}
5858

5959
[TestCaseSource("GetFileSystemActionsForArgumentNullException")]
60-
public void Operations_ShouldThrowArgumentNullExceptionIfPathIsNull(Action<FileBase> action)
60+
public void Operations_ShouldThrowArgumentNullExceptionIfPathIsNull(Action<IFile> action)
6161
{
6262
// Arrange
6363
var fileSystem = new MockFileSystem();

System.IO.Abstractions.TestingHelpers/IMockFileDataAccessor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ public interface IMockFileDataAccessor
5656

5757
StringOperations StringOperations { get; }
5858

59-
FileBase File { get; }
60-
DirectoryBase Directory { get; }
59+
IFile File { get; }
60+
IDirectory Directory { get; }
6161
IFileInfoFactory FileInfo {get; }
6262
PathBase Path { get; }
6363
IDirectoryInfoFactory DirectoryInfo { get; }

System.IO.Abstractions.TestingHelpers/MockFileSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public MockFileSystem(IDictionary<string, MockFileData> files, string currentDir
5353
}
5454

5555
public StringOperations StringOperations { get; }
56-
public FileBase File { get; }
57-
public DirectoryBase Directory { get; }
56+
public IFile File { get; }
57+
public IDirectory Directory { get; }
5858
public IFileInfoFactory FileInfo { get; }
5959
public IFileStreamFactory FileStream { get; }
6060
public PathBase Path { get; }

System.IO.Abstractions/DirectoryBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace System.IO.Abstractions
55
{
66
/// <inheritdoc cref="Directory"/>
77
[Serializable]
8-
public abstract class DirectoryBase
8+
public abstract class DirectoryBase : IDirectory
99
{
1010
protected DirectoryBase(IFileSystem fileSystem)
1111
{

System.IO.Abstractions/FileBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace System.IO.Abstractions
66
{
77
/// <inheritdoc cref="File"/>
88
[Serializable]
9-
public abstract class FileBase
9+
public abstract class FileBase : IFile
1010
{
1111
protected FileBase(IFileSystem fileSystem)
1212
{

System.IO.Abstractions/FileSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ public FileSystem()
1515
FileSystemWatcher = new FileSystemWatcherFactory();
1616
}
1717

18-
public DirectoryBase Directory { get; }
18+
public IDirectory Directory { get; }
1919

20-
public FileBase File { get; }
20+
public IFile File { get; }
2121

2222
public IFileInfoFactory FileInfo { get; }
2323

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using System.Collections.Generic;
2+
using System.Security.AccessControl;
3+
4+
namespace System.IO.Abstractions
5+
{
6+
public interface IDirectory
7+
{
8+
IFileSystem FileSystem { get; }
9+
10+
DirectoryInfoBase CreateDirectory(string path);
11+
void Delete(string path);
12+
void Delete(string path, bool recursive);
13+
IEnumerable<string> EnumerateDirectories(string path);
14+
IEnumerable<string> EnumerateDirectories(string path, string searchPattern);
15+
IEnumerable<string> EnumerateDirectories(string path, string searchPattern, SearchOption searchOption);
16+
IEnumerable<string> EnumerateFiles(string path);
17+
IEnumerable<string> EnumerateFiles(string path, string searchPattern);
18+
IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOption);
19+
IEnumerable<string> EnumerateFileSystemEntries(string path);
20+
IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern);
21+
IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, SearchOption searchOption);
22+
bool Exists(string path);
23+
DirectorySecurity GetAccessControl(string path);
24+
DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections);
25+
DateTime GetCreationTime(string path);
26+
DateTime GetCreationTimeUtc(string path);
27+
string GetCurrentDirectory();
28+
string[] GetDirectories(string path);
29+
string[] GetDirectories(string path, string searchPattern);
30+
string[] GetDirectories(string path, string searchPattern, SearchOption searchOption);
31+
string GetDirectoryRoot(string path);
32+
string[] GetFiles(string path);
33+
string[] GetFiles(string path, string searchPattern);
34+
string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
35+
string[] GetFileSystemEntries(string path);
36+
string[] GetFileSystemEntries(string path, string searchPattern);
37+
DateTime GetLastAccessTime(string path);
38+
DateTime GetLastAccessTimeUtc(string path);
39+
DateTime GetLastWriteTime(string path);
40+
DateTime GetLastWriteTimeUtc(string path);
41+
DirectoryInfoBase GetParent(string path);
42+
void Move(string sourceDirName, string destDirName);
43+
void SetAccessControl(string path, DirectorySecurity directorySecurity);
44+
void SetCreationTime(string path, DateTime creationTime);
45+
void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
46+
void SetCurrentDirectory(string path);
47+
void SetLastAccessTime(string path, DateTime lastAccessTime);
48+
void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
49+
void SetLastWriteTime(string path, DateTime lastWriteTime);
50+
void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);
51+
52+
#if NET40
53+
DirectoryInfoBase CreateDirectory(string path, DirectorySecurity directorySecurity);
54+
string[] GetLogicalDrives();
55+
#endif
56+
57+
}
58+
}

System.IO.Abstractions/IFile.cs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
using System.Collections.Generic;
2+
using System.Security.AccessControl;
3+
using System.Text;
4+
5+
namespace System.IO.Abstractions
6+
{
7+
public interface IFile
8+
{
9+
IFileSystem FileSystem { get; }
10+
11+
void AppendAllLines(string path, IEnumerable<string> contents);
12+
void AppendAllLines(string path, IEnumerable<string> contents, Encoding encoding);
13+
void AppendAllText(string path, string contents);
14+
void AppendAllText(string path, string contents, Encoding encoding);
15+
StreamWriter AppendText(string path);
16+
void Copy(string sourceFileName, string destFileName);
17+
void Copy(string sourceFileName, string destFileName, bool overwrite);
18+
Stream Create(string path);
19+
Stream Create(string path, int bufferSize);
20+
Stream Create(string path, int bufferSize, FileOptions options);
21+
StreamWriter CreateText(string path);
22+
void Delete(string path);
23+
bool Exists(string path);
24+
FileSecurity GetAccessControl(string path);
25+
FileSecurity GetAccessControl(string path, AccessControlSections includeSections);
26+
FileAttributes GetAttributes(string path);
27+
DateTime GetCreationTime(string path);
28+
DateTime GetCreationTimeUtc(string path);
29+
DateTime GetLastAccessTime(string path);
30+
DateTime GetLastAccessTimeUtc(string path);
31+
DateTime GetLastWriteTime(string path);
32+
DateTime GetLastWriteTimeUtc(string path);
33+
void Move(string sourceFileName, string destFileName);
34+
Stream Open(string path, FileMode mode);
35+
Stream Open(string path, FileMode mode, FileAccess access);
36+
Stream Open(string path, FileMode mode, FileAccess access, FileShare share);
37+
Stream OpenRead(string path);
38+
StreamReader OpenText(string path);
39+
Stream OpenWrite(string path);
40+
byte[] ReadAllBytes(string path);
41+
string[] ReadAllLines(string path);
42+
string[] ReadAllLines(string path, Encoding encoding);
43+
string ReadAllText(string path);
44+
string ReadAllText(string path, Encoding encoding);
45+
IEnumerable<string> ReadLines(string path);
46+
IEnumerable<string> ReadLines(string path, Encoding encoding);
47+
void SetAccessControl(string path, FileSecurity fileSecurity);
48+
void SetAttributes(string path, FileAttributes fileAttributes);
49+
void SetCreationTime(string path, DateTime creationTime);
50+
void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
51+
void SetLastAccessTime(string path, DateTime lastAccessTime);
52+
void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
53+
void SetLastWriteTime(string path, DateTime lastWriteTime);
54+
void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);
55+
void WriteAllBytes(string path, byte[] bytes);
56+
void WriteAllLines(string path, IEnumerable<string> contents);
57+
void WriteAllLines(string path, IEnumerable<string> contents, Encoding encoding);
58+
void WriteAllLines(string path, string[] contents);
59+
void WriteAllLines(string path, string[] contents, Encoding encoding);
60+
void WriteAllText(string path, string contents);
61+
void WriteAllText(string path, string contents, Encoding encoding);
62+
63+
#if NET40
64+
void Decrypt(string path);
65+
void Encrypt(string path);
66+
void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName);
67+
void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);
68+
#endif
69+
}
70+
}

System.IO.Abstractions/IFileSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
{
33
public interface IFileSystem
44
{
5-
FileBase File { get; }
6-
DirectoryBase Directory { get; }
5+
IFile File { get; }
6+
IDirectory Directory { get; }
77
IFileInfoFactory FileInfo { get; }
88
IFileStreamFactory FileStream { get; }
99
PathBase Path { get; }

0 commit comments

Comments
 (0)