SevenZipCompressorTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using System.Net.Http;
  4. using Masuit.Tools.Files;
  5. using Masuit.Tools.Systems;
  6. using Xunit;
  7. namespace Masuit.Tools.Abstractions.Test.Files;
  8. public class SevenZipCompressorTests
  9. {
  10. private readonly SevenZipCompressor _compressor;
  11. private readonly string _testDir;
  12. private readonly string _testFile1;
  13. private readonly string _testFile2;
  14. private readonly string _zipFile;
  15. public SevenZipCompressorTests()
  16. {
  17. _compressor = new SevenZipCompressor(new HttpClient());
  18. _testDir = Path.Combine(Path.GetTempPath(), "TestDir");
  19. _testFile1 = Path.Combine(_testDir, "TestFile1.txt");
  20. _testFile2 = Path.Combine(_testDir, "TestFile2.txt");
  21. _zipFile = Path.Combine(Path.GetTempPath(), "TestArchive.zip");
  22. if (Directory.Exists(_testDir))
  23. {
  24. Directory.Delete(_testDir, true);
  25. }
  26. Directory.CreateDirectory(_testDir);
  27. File.WriteAllText(_testFile1, "This is a test file 1.");
  28. File.WriteAllText(_testFile2, "This is a test file 2.");
  29. }
  30. [Fact]
  31. public void ZipStream_ShouldCreateZipStreamFromFiles()
  32. {
  33. var files = new List<string> { _testFile1, _testFile2 };
  34. using var zipStream = _compressor.ZipStream(files);
  35. Assert.NotNull(zipStream);
  36. Assert.True(zipStream.Length > 0);
  37. }
  38. [Fact]
  39. public void ZipStream_ShouldCreateZipStreamFromDirectory()
  40. {
  41. using var zipStream = _compressor.ZipStream(_testDir);
  42. Assert.NotNull(zipStream);
  43. Assert.True(zipStream.Length > 0);
  44. }
  45. [Fact]
  46. public void ZipStream_ShouldCreateZipStreamFromStreams()
  47. {
  48. var streams = new DisposableDictionary<string, Stream>
  49. {
  50. { "TestFile1.txt", new MemoryStream(System.Text.Encoding.UTF8.GetBytes("This is a test file 1.")) },
  51. { "TestFile2.txt", new MemoryStream(System.Text.Encoding.UTF8.GetBytes("This is a test file 2.")) }
  52. };
  53. using var zipStream = _compressor.ZipStream(streams);
  54. Assert.NotNull(zipStream);
  55. Assert.True(zipStream.Length > 0);
  56. }
  57. [Fact]
  58. public void Zip_ShouldCreateZipFileFromFiles()
  59. {
  60. var files = new List<string> { _testFile1, _testFile2 };
  61. _compressor.Zip(files, _zipFile);
  62. Assert.True(File.Exists(_zipFile));
  63. Assert.True(new FileInfo(_zipFile).Length > 0);
  64. }
  65. [Fact]
  66. public void Zip_ShouldCreateZipFileFromDirectory()
  67. {
  68. _compressor.Zip(_testDir, _zipFile);
  69. Assert.True(File.Exists(_zipFile));
  70. Assert.True(new FileInfo(_zipFile).Length > 0);
  71. }
  72. [Fact]
  73. public void Zip_ShouldCreateZipFileFromStreams()
  74. {
  75. var streams = new DisposableDictionary<string, Stream>
  76. {
  77. { "TestFile1.txt", new MemoryStream(System.Text.Encoding.UTF8.GetBytes("This is a test file 1.")) },
  78. { "TestFile2.txt", new MemoryStream(System.Text.Encoding.UTF8.GetBytes("This is a test file 2.")) }
  79. };
  80. _compressor.Zip(streams, _zipFile);
  81. Assert.True(File.Exists(_zipFile));
  82. Assert.True(new FileInfo(_zipFile).Length > 0);
  83. }
  84. [Fact]
  85. public void Decompress_ShouldExtractFiles()
  86. {
  87. _compressor.Zip(_testDir, _zipFile);
  88. var extractDir = Path.Combine(Path.GetTempPath(), "ExtractDir");
  89. if (Directory.Exists(extractDir))
  90. {
  91. Directory.Delete(extractDir, true);
  92. }
  93. _compressor.Decompress(_zipFile, extractDir);
  94. Assert.True(Directory.Exists(extractDir));
  95. Assert.True(File.Exists(Path.Combine(extractDir, "TestFile1.txt")));
  96. Assert.True(File.Exists(Path.Combine(extractDir, "TestFile2.txt")));
  97. }
  98. }