using System.Diagnostics;
using System.Threading.Tasks;
using NUnit.Framework.Internal;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Tar;
void Repro(string input) {
var data = new byte[size];
var random = new Random(data.Length);
using (var zipStream = new MemoryStream(size * 2))
using (var zipOutputStream = new ZipOutputStream(zipStream))
var entry = new ZipEntry("x");
zipOutputStream.PutNextEntry(entry);
zipOutputStream.Write(data, 0, data.Length);
zipOutputStream.CloseEntry();
var bughere = zipStream.GetBuffer();
using (var zipFile = new ZipFile(new MemoryStream(bughere)))
void Test<T>(Action<T> a, T input)
using var ctx = new TestExecutionContext.IsolatedContext();
Console.WriteLine($"Testing input \"{input}\"...\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}");