namespace MeloongCore.Tests; public class FileUtilsTest : TestWithFolder { #region 压缩包 [Theory] [InlineData("GB Encoding.zip")] [InlineData("UTF8 Encoding.zip")] public void Compression_ReadZip(string testFile) { double progress = 0; string output = Path.Combine(tempFolder, "Extracted"); FileUtils.ExtractToDirectory(GetTestFile(testFile), output, p => progress = p); Assert.Equal(1, progress); Assert.True(DirectoryUtils.Exists(Path.Combine(output, "文件夹"))); Assert.False(DirectoryUtils.Exists(Path.Combine(output, "空文件夹"))); Assert.Contains("FabricLoader", File.ReadAllText(PathUtils.WithLongPath(Path.Combine(output, "fabricloader.log")))); Assert.Contains("测试内容", File.ReadAllText(PathUtils.WithLongPath(Path.Combine(output, "文件夹", "中文文件.txt")))); } [Theory] [InlineData("GZ.gz", "LTCat")] public void Compression_ReadGz(string testFile, string containsText) { double progress = 0; string output = Path.Combine(tempFolder, "Extracted"); FileUtils.ExtractToDirectory(GetTestFile(testFile), output, p => progress = p); Assert.Equal(1, progress); Assert.Contains(containsText, File.ReadAllText(PathUtils.WithLongPath(Path.Combine(output, Path.GetFileNameWithoutExtension(testFile))))); } [Theory] [InlineData("Corrupted.zip")] [InlineData("Not zip.zip")] public void Compression_ReadBad(string testFile) { Assert.Throws(() => FileUtils.ExtractToDirectory(GetTestFile(testFile), tempFolder)); } #endregion }