FileUtilsTest.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace MeloongCore.Tests;
  2. public class FileUtilsTest : TestWithFolder {
  3. #region 解压
  4. [Test]
  5. [Arguments("GB Encoding.zip")]
  6. [Arguments("UTF8 Encoding.zip")]
  7. public async Task 解压_ReadZip(string testFile) {
  8. double progress = 0;
  9. string output = Path.Combine(tempFolder, "Extracted");
  10. FileUtils.ExtractToDirectory(GetTestFile(testFile), output, p => progress = p);
  11. await Assert.That(progress).IsEqualTo(1);
  12. await Assert.That(DirectoryUtils.Exists(Path.Combine(output, "文件夹"))).IsTrue();
  13. await Assert.That(DirectoryUtils.Exists(Path.Combine(output, "空文件夹"))).IsFalse();
  14. await Assert.That(File.ReadAllText(PathUtils.ToExtendedFormat(Path.Combine(output, "fabricloader.log")))).Contains("FabricLoader");
  15. await Assert.That(File.ReadAllText(PathUtils.ToExtendedFormat(Path.Combine(output, "文件夹", "中文文件.txt")))).Contains("测试内容");
  16. }
  17. [Test]
  18. [Arguments("GZ.gz", "LTCat")]
  19. public async Task 解压_ReadGz(string testFile, string containsText) {
  20. double progress = 0;
  21. string output = Path.Combine(tempFolder, "Extracted");
  22. FileUtils.ExtractToDirectory(GetTestFile(testFile), output, p => progress = p);
  23. await Assert.That(progress).IsEqualTo(1);
  24. await Assert.That(File.ReadAllText(PathUtils.ToExtendedFormat(Path.Combine(output, PathUtils.GetFileNameWithoutExtension(testFile))))).Contains(containsText);
  25. }
  26. [Test]
  27. [Arguments("Corrupted.zip")]
  28. [Arguments("Not zip.zip")]
  29. [Arguments("DotDot ZipSlip.zip")]
  30. [Arguments("AbsPath ZipSlip.zip")]
  31. public void 解压_ReadBad(string testFile)
  32. => Assert.Throws<InvalidDataException>(() => FileUtils.ExtractToDirectory(GetTestFile(testFile), tempFolder));
  33. #endregion
  34. }