public static void EmptyEntryTest(ZipArchiveMode mode) { String data1 = "test data written to file."; String data2 = "more test data written to file."; DateTimeOffset lastWrite = new DateTimeOffset(1992, 4, 5, 12, 00, 30, new TimeSpan(-5, 0, 0)); var baseline = new LocalMemoryStream(); using (ZipArchive archive = new ZipArchive(baseline, mode)) { ZipTest.AddEntry(archive, "data1.txt", data1, lastWrite); ZipArchiveEntry e = archive.CreateEntry("empty.txt"); e.LastWriteTime = lastWrite; using (Stream s = e.Open()) { } ZipTest.AddEntry(archive, "data2.txt", data2, lastWrite); } var test = new LocalMemoryStream(); using (ZipArchive archive = new ZipArchive(test, mode)) { ZipTest.AddEntry(archive, "data1.txt", data1, lastWrite); ZipArchiveEntry e = archive.CreateEntry("empty.txt"); e.LastWriteTime = lastWrite; ZipTest.AddEntry(archive, "data2.txt", data2, lastWrite); } //compare Assert.True(ZipTest.ArraysEqual(baseline.ToArray(), test.ToArray()), "Arrays didn't match"); //second test, this time empty file at end baseline = baseline.Clone(); using (ZipArchive archive = new ZipArchive(baseline, mode)) { ZipTest.AddEntry(archive, "data1.txt", data1, lastWrite); ZipArchiveEntry e = archive.CreateEntry("empty.txt"); e.LastWriteTime = lastWrite; using (Stream s = e.Open()) { } } test = test.Clone(); using (ZipArchive archive = new ZipArchive(test, mode)) { ZipTest.AddEntry(archive, "data1.txt", data1, lastWrite); ZipArchiveEntry e = archive.CreateEntry("empty.txt"); e.LastWriteTime = lastWrite; } //compare Assert.True(ZipTest.ArraysEqual(baseline.ToArray(), test.ToArray()), "Arrays didn't match after update"); }