Skip to content

Commit 6e407cd

Browse files
author
Kormos Tamás
committed
- Implemented IFileVersionInfoFactory and moved the FileVersionInfo query from IFileInfo to IFileSystem
- Added a missing API test for the parity test of IFileVersionInfo and FileVersionInfo
1 parent 8f3a2e6 commit 6e407cd

File tree

18 files changed

+183
-48
lines changed

18 files changed

+183
-48
lines changed

src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileInfo.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -333,15 +333,6 @@ public override IDirectoryInfo Directory
333333
}
334334
}
335335

336-
/// <inheritdoc />
337-
public override IFileVersionInfo FileVersionInfo
338-
{
339-
get
340-
{
341-
return mockFileSystem.GetFile(path).FileVersionInfo;
342-
}
343-
}
344-
345336
/// <inheritdoc />
346337
public override string DirectoryName
347338
{

src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileSystem.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public MockFileSystem(IDictionary<string, MockFileData> files, MockFileSystemOpt
6565
File = new MockFile(this);
6666
Directory = new MockDirectory(this, currentDirectory);
6767
FileInfo = new MockFileInfoFactory(this);
68+
FileVersionInfo = new MockFileVersionInfoFactory(this);
6869
FileStream = new MockFileStreamFactory(this);
6970
DirectoryInfo = new MockDirectoryInfoFactory(this);
7071
DriveInfo = new MockDriveInfoFactory(this);
@@ -98,6 +99,8 @@ public MockFileSystem(IDictionary<string, MockFileData> files, MockFileSystemOpt
9899
/// <inheritdoc />
99100
public override IFileInfoFactory FileInfo { get; }
100101
/// <inheritdoc />
102+
public override IFileVersionInfoFactory FileVersionInfo { get; }
103+
/// <inheritdoc />
101104
public override IFileStreamFactory FileStream { get; }
102105
/// <inheritdoc />
103106
public override IPath Path { get; }
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace System.IO.Abstractions.TestingHelpers
8+
{
9+
/// <inheritdoc />
10+
#if FEATURE_SERIALIZABLE
11+
[Serializable]
12+
#endif
13+
public class MockFileVersionInfoFactory : IFileVersionInfoFactory
14+
{
15+
private static IMockFileDataAccessor mockFileSystem;
16+
17+
/// <inheritdoc />
18+
public MockFileVersionInfoFactory(IMockFileDataAccessor mockFileSystem)
19+
{
20+
MockFileVersionInfoFactory.mockFileSystem = mockFileSystem ?? throw new ArgumentNullException(nameof(mockFileSystem));
21+
}
22+
23+
/// <inheritdoc />
24+
public IFileSystem FileSystem => mockFileSystem;
25+
26+
IFileVersionInfo IFileVersionInfoFactory.GetVersionInfo(string fileName)
27+
{
28+
return GetVersionInfo(fileName);
29+
}
30+
31+
/// <inheritdoc cref="Diagnostics.FileVersionInfo.GetVersionInfo(string)" />
32+
public static IFileVersionInfo GetVersionInfo(string fileName)
33+
{
34+
MockFileData mockFileData = mockFileSystem.GetFile(fileName);
35+
36+
if (mockFileData != null)
37+
{
38+
return mockFileData.FileVersionInfo;
39+
}
40+
41+
throw CommonExceptions.FileNotFound(fileName);
42+
}
43+
}
44+
}

src/TestableIO.System.IO.Abstractions.Wrappers/FileInfoBase.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@ internal FileInfoBase() { }
7777
/// <inheritdoc cref="IFileInfo.Directory"/>
7878
public abstract IDirectoryInfo Directory { get; }
7979

80-
/// <inheritdoc cref="IFileVersionInfo"/>
81-
public abstract IFileVersionInfo FileVersionInfo { get; }
82-
8380
/// <inheritdoc cref="IFileInfo.DirectoryName"/>
8481
public abstract string DirectoryName { get; }
8582

src/TestableIO.System.IO.Abstractions.Wrappers/FileInfoWrapper.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -247,12 +247,6 @@ public override IDirectoryInfo Directory
247247
get { return new DirectoryInfoWrapper(FileSystem, instance.Directory); }
248248
}
249249

250-
/// <inheritdoc />
251-
public override IFileVersionInfo FileVersionInfo
252-
{
253-
get { return new FileVersionInfoWrapper(Diagnostics.FileVersionInfo.GetVersionInfo(FullName)); }
254-
}
255-
256250
/// <inheritdoc />
257251
public override string DirectoryName
258252
{

src/TestableIO.System.IO.Abstractions.Wrappers/FileSystem.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public FileSystem()
1212
DriveInfo = new DriveInfoFactory(this);
1313
DirectoryInfo = new DirectoryInfoFactory(this);
1414
FileInfo = new FileInfoFactory(this);
15+
FileVersionInfo = new FileVersionInfoFactory(this);
1516
Path = new PathWrapper(this);
1617
File = new FileWrapper(this);
1718
Directory = new DirectoryWrapper(this);
@@ -28,6 +29,9 @@ public FileSystem()
2829
/// <inheritdoc />
2930
public override IFileInfoFactory FileInfo { get; }
3031

32+
/// <inheritdoc />
33+
public override IFileVersionInfoFactory FileVersionInfo { get; }
34+
3135
/// <inheritdoc />
3236
public override IFileStreamFactory FileStream { get; }
3337

src/TestableIO.System.IO.Abstractions.Wrappers/FileSystemBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public abstract class FileSystemBase : IFileSystem
1515
/// <inheritdoc />
1616
public abstract IFileInfoFactory FileInfo { get; }
1717

18+
/// <inheritdoc />
19+
public abstract IFileVersionInfoFactory FileVersionInfo { get; }
20+
1821
/// <inheritdoc />
1922
public abstract IFileStreamFactory FileStream { get; }
2023

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace System.IO.Abstractions
8+
{
9+
#if FEATURE_SERIALIZABLE
10+
[Serializable]
11+
#endif
12+
internal class FileVersionInfoFactory : IFileVersionInfoFactory
13+
{
14+
private readonly IFileSystem fileSystem;
15+
16+
/// <inheritdoc />
17+
public FileVersionInfoFactory(IFileSystem fileSystem)
18+
{
19+
this.fileSystem = fileSystem;
20+
}
21+
22+
/// <inheritdoc />
23+
public IFileSystem FileSystem => fileSystem;
24+
25+
IFileVersionInfo IFileVersionInfoFactory.GetVersionInfo(string fileName)
26+
{
27+
return GetVersionInfo(fileName);
28+
}
29+
30+
/// <inheritdoc cref="Diagnostics.FileVersionInfo.GetVersionInfo(string)" />
31+
public static IFileVersionInfo GetVersionInfo(string fileName)
32+
{
33+
Diagnostics.FileVersionInfo fileVersionInfo = Diagnostics.FileVersionInfo.GetVersionInfo(fileName);
34+
35+
return new FileVersionInfoWrapper(fileVersionInfo);
36+
}
37+
}
38+
}

src/TestableIO.System.IO.Abstractions/IFileInfo.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ public interface IFileInfo : IFileSystemInfo
88
/// <inheritdoc cref="FileInfo.Directory" />
99
IDirectoryInfo? Directory { get; }
1010

11-
/// <inheritdoc cref="IFileVersionInfo" />
12-
IFileVersionInfo? FileVersionInfo { get; }
13-
1411
/// <inheritdoc cref="FileInfo.DirectoryName" />
1512
string? DirectoryName { get; }
1613

src/TestableIO.System.IO.Abstractions/IFileSystem.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public interface IFileSystem
3030
/// </summary>
3131
IFileInfoFactory FileInfo { get; }
3232

33+
/// <inheritdoc cref="IFileVersionInfoFactory" />
34+
IFileVersionInfoFactory FileVersionInfo { get; }
35+
3336
/// <summary>
3437
/// A factory for the creation of wrappers for <see cref="System.IO.FileStream" />.
3538
/// </summary>

0 commit comments

Comments
 (0)