From 4ba7b950acfad2d8fe398b22638c729cc337eb91 Mon Sep 17 00:00:00 2001 From: Mauro Cardillo Date: Fri, 1 Sep 2023 23:48:18 +0200 Subject: [PATCH] Add some test for class FileSystem --- .../src/MemoryAdapter.cs | 9 +- .../FileSystem/FileSystemTest.cs | 93 +++++++++++++++++++ 2 files changed, 97 insertions(+), 5 deletions(-) diff --git a/src/FileSystem.Adapters.Memory/src/MemoryAdapter.cs b/src/FileSystem.Adapters.Memory/src/MemoryAdapter.cs index 5b465a4..fae117d 100644 --- a/src/FileSystem.Adapters.Memory/src/MemoryAdapter.cs +++ b/src/FileSystem.Adapters.Memory/src/MemoryAdapter.cs @@ -191,13 +191,12 @@ public override async Task WriteFileAsync(string path, byte[] contents, bool ove public override async Task AppendFileAsync(string path, byte[] contents, CancellationToken cancellationToken = default) { - await GetFileAsync(path, cancellationToken); - - var memoryFile = new MemoryFile(); + var file = await GetFileAsync(path, cancellationToken); - await Task.Run(() => _files.TryGetValue(path, out var memoryFile)); + var content = file.Content ?? Array.Empty(); + file.Content = content.Concat(contents).ToArray(); - memoryFile.Content = memoryFile.Content.Concat(contents).ToArray(); + await Task.Run(() => _files[PrependRootPath(path)].Content = file.Content); } } } diff --git a/tests/FileSystem.Tests/FileSystem/FileSystemTest.cs b/tests/FileSystem.Tests/FileSystem/FileSystemTest.cs index 81d9fc6..b703ebb 100644 --- a/tests/FileSystem.Tests/FileSystem/FileSystemTest.cs +++ b/tests/FileSystem.Tests/FileSystem/FileSystemTest.cs @@ -474,6 +474,23 @@ public void FileSystem_WriteFile_IfOverwriteFile_Should_ReturnContentOverWrite() Assert.AreEqual("HelloWorldOverWrite", System.Text.Encoding.UTF8.GetString(file.Content)); } + [TestMethod] + [TestCategory("UnitTest")] + public void FileSystem_WriteFileString_IfSuccess_Should_ReturnFileExists() + { + //Arrange + var memoryAdapter = new MemoryAdapter("memory-1", "/"); + + var fileSystem = new Maurosoft.FileSystem.FileSystem(); + fileSystem.Adapters.Add(memoryAdapter); + + //Act + fileSystem.WriteFile("memory-1://home/helloworld.txt", "HelloWorld"); + + //Assert + Assert.IsTrue(fileSystem.FileExists("memory-1://home/helloworld.txt")); + } + [TestMethod] [TestCategory("UnitTest")] public void FileSystem_CopyFile_IfSuccess_Should_ReturnExistsDestinationFile() @@ -553,4 +570,80 @@ public void FileSystem_CopyFile_AcrossAdapter_IfOverWriteSuccess_Should_ReturnCo //Assert Assert.AreEqual("HelloWorldNew", System.Text.Encoding.UTF8.GetString(file.Content)); } + + [TestMethod] + [TestCategory("UnitTest")] + public void FileSystem_AppendFileByte_IfSuccess_Should_ReturnNewContentFile() + { + //Arrange + var memoryAdapter = new MemoryAdapter("memory-1", "/"); + + var fileSystem = new Maurosoft.FileSystem.FileSystem(); + fileSystem.Adapters.Add(memoryAdapter); + fileSystem.WriteFile("memory-1://home/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("HelloWorld")); + + //Act + fileSystem.AppendFile("memory-1://home/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("AppendFile")); + var file = fileSystem.GetFile("memory-1://home/helloworld.txt"); + + //Assert + Assert.AreEqual("HelloWorldAppendFile", System.Text.Encoding.UTF8.GetString(file.Content)); + } + + [TestMethod] + [TestCategory("UnitTest")] + public void FileSystem_AppendFileString_IfSuccess_Should_ReturnNewContentFile() + { + //Arrange + var memoryAdapter = new MemoryAdapter("memory-1", "/"); + + var fileSystem = new Maurosoft.FileSystem.FileSystem(); + fileSystem.Adapters.Add(memoryAdapter); + fileSystem.WriteFile("memory-1://home/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("HelloWorld")); + + //Act + fileSystem.AppendFile("memory-1://home/helloworld.txt", "AppendFile"); + var file = fileSystem.GetFile("memory-1://home/helloworld.txt"); + + //Assert + Assert.AreEqual("HelloWorldAppendFile", System.Text.Encoding.UTF8.GetString(file.Content)); + } + + [TestMethod] + [TestCategory("UnitTest")] + public void FileSystem_MoveFile_IfSuccess_Should_ReturnFileSourceNotExist() + { + //Arrange + var memoryAdapter = new MemoryAdapter("memory-1", "/"); + + var fileSystem = new Maurosoft.FileSystem.FileSystem(); + fileSystem.Adapters.Add(memoryAdapter); + fileSystem.WriteFile("memory-1://home/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("HelloWorld")); + + //Act + fileSystem.MoveFile("memory-1://home/helloworld.txt", "memory-1://home1/helloworld.txt"); + + //Assert + Assert.IsFalse(fileSystem.FileExists("memory-1://home/helloworld.txt")); + } + + [TestMethod] + [TestCategory("UnitTest")] + public void FileSystem_MoveFile_IfOverWriteDestinationFile_Should_ReturnFileSourceNotExist() + { + //Arrange + var memoryAdapter = new MemoryAdapter("memory-1", "/"); + + var fileSystem = new Maurosoft.FileSystem.FileSystem(); + fileSystem.Adapters.Add(memoryAdapter); + fileSystem.WriteFile("memory-1://home1/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("HelloWorld1")); + fileSystem.WriteFile("memory-1://home2/helloworld.txt", System.Text.Encoding.UTF8.GetBytes("HelloWorld2")); + + //Act + fileSystem.MoveFile("memory-1://home1/helloworld.txt", "memory-1://home2/helloworld.txt", true); + var file = fileSystem.GetFile("memory-1://home2/helloworld.txt"); + + //Assert + Assert.AreEqual("HelloWorld1", System.Text.Encoding.UTF8.GetString(file.Content)); + } } \ No newline at end of file