diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemSerializationTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemSerializationTests.cs new file mode 100644 index 000000000..3d6623cc5 --- /dev/null +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemSerializationTests.cs @@ -0,0 +1,41 @@ +namespace System.IO.Abstractions.TestingHelpers.Tests +{ + using NUnit.Framework; + using Text; + using XFS = MockUnixSupport; + [TestFixture] + class MockFileSystemSerializationTests + { + [Test] + public void SerializationBytes() + { + // Arrange + string path = XFS.Path(@"c:\something\demo.txt"); + + var content = "Hello there!" + Environment.NewLine + "Second line!" + Environment.NewLine; + var expected = Encoding.ASCII.GetBytes(content); //Convert a C# string to a byte array + + var fileSystem = new MockFileSystem(); + fileSystem.AddDirectory(XFS.Path(@"c:\something")); + + fileSystem.File.WriteAllBytes(path, expected); + + //Act + var memoryStream = new MemoryStream(); + var serializer = new Runtime.Serialization.Formatters.Binary.BinaryFormatter(); + serializer.Serialize(memoryStream, fileSystem); + memoryStream.Flush(); + memoryStream.Position = 0; + fileSystem = (MockFileSystem)serializer.Deserialize(memoryStream); + memoryStream.Dispose(); + + // Assert + Assert.AreEqual( + expected, + fileSystem.GetFile(path).Contents); + Assert.AreEqual( + content, + fileSystem.File.ReadAllBytes(path)); + } + } +} \ No newline at end of file diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index 83957f0d8..a9cd3b49d 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -13,7 +13,6 @@ public class MockFileSystem : IFileSystem, IMockFileDataAccessor private const string DEFAULT_CURRENT_DIRECTORY = @"C:\"; private readonly IDictionary files; - [NonSerialized] private readonly PathVerifier pathVerifier; public MockFileSystem() : this(null) { } diff --git a/System.IO.Abstractions.TestingHelpers/PathVerifier.cs b/System.IO.Abstractions.TestingHelpers/PathVerifier.cs index c32680276..ad2e82445 100644 --- a/System.IO.Abstractions.TestingHelpers/PathVerifier.cs +++ b/System.IO.Abstractions.TestingHelpers/PathVerifier.cs @@ -4,6 +4,7 @@ namespace System.IO.Abstractions.TestingHelpers { using XFS = MockUnixSupport; + [Serializable] public class PathVerifier { private static readonly char[] AdditionalInvalidPathChars = { '*', '?' };