diff --git a/Source/Testably.Abstractions.Testing/MockFileSystem.cs b/Source/Testably.Abstractions.Testing/MockFileSystem.cs index 1949a9e7e..5d523ecda 100644 --- a/Source/Testably.Abstractions.Testing/MockFileSystem.cs +++ b/Source/Testably.Abstractions.Testing/MockFileSystem.cs @@ -35,7 +35,7 @@ public sealed class MockFileSystem : IFileSystem /// The simulation mode for the underlying operating system. /// /// - /// Can be changed by setting in + /// Can be changed by setting in /// the constructor. /// #else @@ -101,15 +101,15 @@ internal IReadOnlyList StorageContainers /// /// Initializes the . /// - public MockFileSystem() : this(_ => { }) { } + public MockFileSystem() : this(o => o) { } /// - /// Initializes the with the . + /// Initializes the with the . /// - public MockFileSystem(Action initializationCallback) + public MockFileSystem(Func options) { - Initialization initialization = new(); - initializationCallback(initialization); + MockFileSystemOptions initialization = new(); + initialization = options(initialization); #if CAN_SIMULATE_OTHER_OS SimulationMode = initialization.SimulationMode; @@ -217,7 +217,7 @@ public MockFileSystem WithSafeFileHandleStrategy( return this; } - private void InitializeFileSystem(Initialization initialization) + private void InitializeFileSystem(MockFileSystemOptions initialization) { try { @@ -240,7 +240,7 @@ private void InitializeFileSystem(Initialization initialization) /// /// The initialization options for the . /// - public class Initialization + public class MockFileSystemOptions { /// /// The current directory. @@ -257,16 +257,11 @@ public class Initialization /// internal SimulationMode SimulationMode { get; private set; } = SimulationMode.Native; - internal Initialization() - { - // Avoid public constructor - } - #if CAN_SIMULATE_OTHER_OS /// /// Specify the operating system that should be simulated. /// - public Initialization SimulatingOperatingSystem(SimulationMode simulationMode) + public MockFileSystemOptions SimulatingOperatingSystem(SimulationMode simulationMode) { SimulationMode = simulationMode; return this; @@ -276,7 +271,7 @@ public Initialization SimulatingOperatingSystem(SimulationMode simulationMode) /// /// Use the provided as current directory. /// - public Initialization UseCurrentDirectory(string path) + public MockFileSystemOptions UseCurrentDirectory(string path) { CurrentDirectory = path; return this; @@ -285,7 +280,7 @@ public Initialization UseCurrentDirectory(string path) /// /// Use as current directory. /// - public Initialization UseCurrentDirectory() + public MockFileSystemOptions UseCurrentDirectory() { CurrentDirectory = System.IO.Directory.GetCurrentDirectory(); return this; @@ -294,7 +289,7 @@ public Initialization UseCurrentDirectory() /// /// Use the given for the . /// - public Initialization UseRandomProvider(IRandomProvider randomProvider) + public MockFileSystemOptions UseRandomProvider(IRandomProvider randomProvider) { RandomProvider = randomProvider; return this; diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net6.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net6.0.txt index d4eeb7311..d6252d355 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net6.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net6.0.txt @@ -93,7 +93,7 @@ namespace Testably.Abstractions.Testing public sealed class MockFileSystem : System.IO.Abstractions.IFileSystem { public MockFileSystem() { } - public MockFileSystem(System.Action initializationCallback) { } + public MockFileSystem(System.Func options) { } public System.IO.Abstractions.IDirectory Directory { get; } public System.IO.Abstractions.IDirectoryInfoFactory DirectoryInfo { get; } public System.IO.Abstractions.IDriveInfoFactory DriveInfo { get; } @@ -112,12 +112,13 @@ namespace Testably.Abstractions.Testing public Testably.Abstractions.Testing.MockFileSystem WithAccessControlStrategy(Testably.Abstractions.Testing.FileSystem.IAccessControlStrategy accessControlStrategy) { } public Testably.Abstractions.Testing.MockFileSystem WithDrive(string? drive, System.Action? driveCallback = null) { } public Testably.Abstractions.Testing.MockFileSystem WithSafeFileHandleStrategy(Testably.Abstractions.Testing.FileSystem.ISafeFileHandleStrategy safeFileHandleStrategy) { } - public class Initialization + public class MockFileSystemOptions { - public Testably.Abstractions.Testing.MockFileSystem.Initialization SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory() { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory(string path) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } + public MockFileSystemOptions() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory(string path) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } } } public static class MockFileSystemExtensions diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net7.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net7.0.txt index c4538ac9d..bebfd38b8 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net7.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net7.0.txt @@ -93,7 +93,7 @@ namespace Testably.Abstractions.Testing public sealed class MockFileSystem : System.IO.Abstractions.IFileSystem { public MockFileSystem() { } - public MockFileSystem(System.Action initializationCallback) { } + public MockFileSystem(System.Func options) { } public System.IO.Abstractions.IDirectory Directory { get; } public System.IO.Abstractions.IDirectoryInfoFactory DirectoryInfo { get; } public System.IO.Abstractions.IDriveInfoFactory DriveInfo { get; } @@ -112,12 +112,13 @@ namespace Testably.Abstractions.Testing public Testably.Abstractions.Testing.MockFileSystem WithAccessControlStrategy(Testably.Abstractions.Testing.FileSystem.IAccessControlStrategy accessControlStrategy) { } public Testably.Abstractions.Testing.MockFileSystem WithDrive(string? drive, System.Action? driveCallback = null) { } public Testably.Abstractions.Testing.MockFileSystem WithSafeFileHandleStrategy(Testably.Abstractions.Testing.FileSystem.ISafeFileHandleStrategy safeFileHandleStrategy) { } - public class Initialization + public class MockFileSystemOptions { - public Testably.Abstractions.Testing.MockFileSystem.Initialization SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory() { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory(string path) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } + public MockFileSystemOptions() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory(string path) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } } } public static class MockFileSystemExtensions diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net8.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net8.0.txt index 58aea17eb..63c1c1db2 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net8.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_net8.0.txt @@ -93,7 +93,7 @@ namespace Testably.Abstractions.Testing public sealed class MockFileSystem : System.IO.Abstractions.IFileSystem { public MockFileSystem() { } - public MockFileSystem(System.Action initializationCallback) { } + public MockFileSystem(System.Func options) { } public System.IO.Abstractions.IDirectory Directory { get; } public System.IO.Abstractions.IDirectoryInfoFactory DirectoryInfo { get; } public System.IO.Abstractions.IDriveInfoFactory DriveInfo { get; } @@ -112,12 +112,13 @@ namespace Testably.Abstractions.Testing public Testably.Abstractions.Testing.MockFileSystem WithAccessControlStrategy(Testably.Abstractions.Testing.FileSystem.IAccessControlStrategy accessControlStrategy) { } public Testably.Abstractions.Testing.MockFileSystem WithDrive(string? drive, System.Action? driveCallback = null) { } public Testably.Abstractions.Testing.MockFileSystem WithSafeFileHandleStrategy(Testably.Abstractions.Testing.FileSystem.ISafeFileHandleStrategy safeFileHandleStrategy) { } - public class Initialization + public class MockFileSystemOptions { - public Testably.Abstractions.Testing.MockFileSystem.Initialization SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory() { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory(string path) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } + public MockFileSystemOptions() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions SimulatingOperatingSystem(Testably.Abstractions.Testing.SimulationMode simulationMode) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory(string path) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } } } public static class MockFileSystemExtensions diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.0.txt index 4587f8266..2b1fd8bc6 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.0.txt @@ -91,7 +91,7 @@ namespace Testably.Abstractions.Testing public sealed class MockFileSystem : System.IO.Abstractions.IFileSystem { public MockFileSystem() { } - public MockFileSystem(System.Action initializationCallback) { } + public MockFileSystem(System.Func options) { } public System.IO.Abstractions.IDirectory Directory { get; } public System.IO.Abstractions.IDirectoryInfoFactory DirectoryInfo { get; } public System.IO.Abstractions.IDriveInfoFactory DriveInfo { get; } @@ -110,11 +110,12 @@ namespace Testably.Abstractions.Testing public Testably.Abstractions.Testing.MockFileSystem WithAccessControlStrategy(Testably.Abstractions.Testing.FileSystem.IAccessControlStrategy accessControlStrategy) { } public Testably.Abstractions.Testing.MockFileSystem WithDrive(string? drive, System.Action? driveCallback = null) { } public Testably.Abstractions.Testing.MockFileSystem WithSafeFileHandleStrategy(Testably.Abstractions.Testing.FileSystem.ISafeFileHandleStrategy safeFileHandleStrategy) { } - public class Initialization + public class MockFileSystemOptions { - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory() { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory(string path) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } + public MockFileSystemOptions() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory(string path) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } } } public static class MockFileSystemExtensions diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.1.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.1.txt index 1c6d399b2..13ebed2f2 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.1.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Testing_netstandard2.1.txt @@ -91,7 +91,7 @@ namespace Testably.Abstractions.Testing public sealed class MockFileSystem : System.IO.Abstractions.IFileSystem { public MockFileSystem() { } - public MockFileSystem(System.Action initializationCallback) { } + public MockFileSystem(System.Func options) { } public System.IO.Abstractions.IDirectory Directory { get; } public System.IO.Abstractions.IDirectoryInfoFactory DirectoryInfo { get; } public System.IO.Abstractions.IDriveInfoFactory DriveInfo { get; } @@ -110,11 +110,12 @@ namespace Testably.Abstractions.Testing public Testably.Abstractions.Testing.MockFileSystem WithAccessControlStrategy(Testably.Abstractions.Testing.FileSystem.IAccessControlStrategy accessControlStrategy) { } public Testably.Abstractions.Testing.MockFileSystem WithDrive(string? drive, System.Action? driveCallback = null) { } public Testably.Abstractions.Testing.MockFileSystem WithSafeFileHandleStrategy(Testably.Abstractions.Testing.FileSystem.ISafeFileHandleStrategy safeFileHandleStrategy) { } - public class Initialization + public class MockFileSystemOptions { - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory() { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseCurrentDirectory(string path) { } - public Testably.Abstractions.Testing.MockFileSystem.Initialization UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } + public MockFileSystemOptions() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory() { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseCurrentDirectory(string path) { } + public Testably.Abstractions.Testing.MockFileSystem.MockFileSystemOptions UseRandomProvider(Testably.Abstractions.Testing.RandomSystem.IRandomProvider randomProvider) { } } } public static class MockFileSystemExtensions diff --git a/Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs b/Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs index 43e97d00b..0295b4658 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs @@ -90,9 +90,9 @@ public void MockFileSystem_WithoutCurrentDirectory_ShouldUseDefaultDriveAsCurren public void SimulatingOperatingSystem_ValidOSPlatform_ShouldSetOperatingSystem( SimulationMode simulationMode) { - MockFileSystem.Initialization sut = new(); + MockFileSystem.MockFileSystemOptions sut = new(); - MockFileSystem.Initialization result = sut.SimulatingOperatingSystem(simulationMode); + MockFileSystem.MockFileSystemOptions result = sut.SimulatingOperatingSystem(simulationMode); result.SimulationMode.Should().Be(simulationMode); sut.SimulationMode.Should().Be(simulationMode); @@ -103,9 +103,9 @@ public void SimulatingOperatingSystem_ValidOSPlatform_ShouldSetOperatingSystem( public void UseCurrentDirectory_Empty_ShouldUseCurrentDirectory() { string expected = Directory.GetCurrentDirectory(); - MockFileSystem.Initialization sut = new(); + MockFileSystem.MockFileSystemOptions sut = new(); - MockFileSystem.Initialization result = sut.UseCurrentDirectory(); + MockFileSystem.MockFileSystemOptions result = sut.UseCurrentDirectory(); result.CurrentDirectory.Should().Be(expected); sut.CurrentDirectory.Should().Be(expected); @@ -115,9 +115,9 @@ public void UseCurrentDirectory_Empty_ShouldUseCurrentDirectory() [AutoData] public void UseCurrentDirectory_WithPath_ShouldUsePathCurrentDirectory(string path) { - MockFileSystem.Initialization sut = new(); + MockFileSystem.MockFileSystemOptions sut = new(); - MockFileSystem.Initialization result = sut.UseCurrentDirectory(path); + MockFileSystem.MockFileSystemOptions result = sut.UseCurrentDirectory(path); result.CurrentDirectory.Should().Be(path); sut.CurrentDirectory.Should().Be(path);