diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamFactoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamFactoryTests.cs index 6744c21b8..51760aa48 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamFactoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamFactoryTests.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using NUnit.Framework; +using System.Text; namespace System.IO.Abstractions.TestingHelpers.Tests { @@ -44,6 +45,30 @@ public void MockFileStreamFactory_CreateForNonExistingFile_ShouldReturnStream(Fi Assert.IsNotNull(result); } + [Test] + [TestCase(FileMode.Create)] + [TestCase(FileMode.CreateNew)] + public void MockFileStreamFactory_CreateForAnExistingFile_ShouldTruncateExistingFile(FileMode fileMode) + { + var fileSystem = new MockFileSystem(); + string FilePath = XFS.Path("C:\\File.txt"); + + using(var stream = fileSystem.FileStream.Create(FilePath, fileMode, System.IO.FileAccess.Write)) + { + var data = Encoding.UTF8.GetBytes("1234567890"); + stream.Write(data, 0, data.Length); + } + + using(var stream = fileSystem.FileStream.Create(FilePath, fileMode, System.IO.FileAccess.Write)) + { + var data = Encoding.UTF8.GetBytes("AAAAA"); + stream.Write(data, 0, data.Length); + } + + var text = fileSystem.File.ReadAllText(FilePath); + Assert.AreEqual("AAAAA", text); + } + [Test] [TestCase(FileMode.Create)] [TestCase(FileMode.Open)] diff --git a/System.IO.Abstractions.TestingHelpers/MockFileStreamFactory.cs b/System.IO.Abstractions.TestingHelpers/MockFileStreamFactory.cs index c673f4a80..b23607b81 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileStreamFactory.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileStreamFactory.cs @@ -78,6 +78,14 @@ private static MockFileStream.StreamType GetStreamType(FileMode mode, FileAccess { return MockFileStream.StreamType.TRUNCATE; } + else if (mode == FileMode.Create) + { + return MockFileStream.StreamType.TRUNCATE; + } + else if (mode == FileMode.CreateNew) + { + return MockFileStream.StreamType.TRUNCATE; + } else { return MockFileStream.StreamType.WRITE;