File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
test/ICSharpCode.SharpZipLib.Tests/GZip Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff 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" ) ]
You can’t perform that action at this time.
0 commit comments