Skip to content

Commit 34d7472

Browse files
authored
Merge PR #371: Add test for GZip with small buffer
Add test reproducing issue #360
1 parent 1435683 commit 34d7472

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

test/ICSharpCode.SharpZipLib.Tests/GZip/GZipTests.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,56 @@ public void FlushToUnderlyingStream()
344344
}
345345
}
346346

347+
[Test]
348+
[Category("GZip")]
349+
public void SmallBufferDecompression()
350+
{
351+
var outputBufferSize = 100000;
352+
var inputBufferSize = outputBufferSize * 4;
353+
354+
var outputBuffer = new byte[outputBufferSize];
355+
var inputBuffer = new byte[inputBufferSize];
356+
357+
using (var msGzip = new MemoryStream())
358+
{
359+
using (var gzos = new GZipOutputStream(msGzip))
360+
{
361+
gzos.IsStreamOwner = false;
362+
363+
var rnd = new Random(0);
364+
rnd.NextBytes(inputBuffer);
365+
gzos.Write(inputBuffer, 0, inputBuffer.Length);
366+
367+
gzos.Flush();
368+
gzos.Finish();
369+
}
370+
371+
msGzip.Seek(0, SeekOrigin.Begin);
372+
373+
374+
using (var gzis = new GZipInputStream(msGzip))
375+
using (var msRaw = new MemoryStream())
376+
{
377+
378+
int readOut;
379+
while ((readOut = gzis.Read(outputBuffer, 0, outputBuffer.Length)) > 0)
380+
{
381+
msRaw.Write(outputBuffer, 0, readOut);
382+
}
383+
384+
var resultBuffer = msRaw.ToArray();
385+
386+
for (var i = 0; i < resultBuffer.Length; i++)
387+
{
388+
Assert.AreEqual(inputBuffer[i], resultBuffer[i]);
389+
}
390+
391+
392+
}
393+
}
394+
395+
}
396+
347397
[Test]
348398
[Category("GZip")]
349399
[Category("Performance")]

0 commit comments

Comments
 (0)