using NUnit.Framework.Internal;
using ICSharpCode.SharpZipLib.Zip;
using var ms = new MemoryStream();
using (var zipFile = ZipFile.Create(ms)) {
zipFile.Password = "123456";
zipFile.AddDirectory("files");
zipFile.Add(Path.GetTempFileName(), "files/file1.txt");
zipFile.Add(Path.GetTempFileName(), "files/file2.txt");
ms.Seek(0, SeekOrigin.Begin);
Log($"Wrote {ms.Length} bytes!");
using (var zis = new ZipInputStream(ms){ IsStreamOwner = false, Password = "123456" }) {
var entry = zis.GetNextEntry();
Assert.That(entry, Is.Not.Null);
Assert.That(entry.Name, Is.EqualTo("files/"));
entry = zis.GetNextEntry();
Assert.That(entry, Is.Not.Null);
Assert.That(entry.Name, Is.EqualTo("files/file1.txt"));
entry = zis.GetNextEntry();
Assert.That(entry, Is.Not.Null);
Assert.That(entry.Name, Is.EqualTo("files/file2.txt"));
using var ctx = new TestExecutionContext.IsolatedContext();
Console.WriteLine("Testing...\n");
Console.WriteLine("\n=> OK!");
Console.WriteLine($"\n=> Failed! ({x.GetType().Name})");
Console.WriteLine($"\n{x.Message}");
var trimmedStack = string.Join("\n", x.StackTrace.Split("\n").Where(l => !l.Contains("ReportFailure")));
Console.WriteLine($"{trimmedStack}");
Console.WriteLine($"\n{new string('=', 128)}\n");
void Log(string message) => Console.WriteLine($" {message}");