Skip to content

Commit c0cca1e

Browse files
committed
test(gzip): split async tests and add seeds
1 parent d876b0b commit c0cca1e

File tree

2 files changed

+82
-59
lines changed

2 files changed

+82
-59
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
using System.IO;
2+
using System.Text;
3+
using System.Threading.Tasks;
4+
using ICSharpCode.SharpZipLib.GZip;
5+
using ICSharpCode.SharpZipLib.Tests.TestSupport;
6+
using NUnit.Framework;
7+
8+
namespace ICSharpCode.SharpZipLib.Tests.GZip
9+
{
10+
11+
#if NETCOREAPP3_1_OR_GREATER
12+
[TestFixture]
13+
public class GZipAsyncTests
14+
{
15+
[Test]
16+
[Category("GZip")]
17+
[Category("Async")]
18+
public async Task SmallBufferDecompressionAsync([Values(0, 1, 3)] int seed)
19+
{
20+
var outputBufferSize = 100000;
21+
var outputBuffer = new byte[outputBufferSize];
22+
var inputBuffer = Utils.GetDummyBytes(outputBufferSize * 4, seed);
23+
24+
await using var msGzip = new MemoryStream();
25+
await using (var gzos = new GZipOutputStream(msGzip){IsStreamOwner = false})
26+
{
27+
await gzos.WriteAsync(inputBuffer, 0, inputBuffer.Length);
28+
}
29+
30+
msGzip.Seek(0, SeekOrigin.Begin);
31+
32+
using (var gzis = new GZipInputStream(msGzip))
33+
await using (var msRaw = new MemoryStream())
34+
{
35+
int readOut;
36+
while ((readOut = gzis.Read(outputBuffer, 0, outputBuffer.Length)) > 0)
37+
{
38+
await msRaw.WriteAsync(outputBuffer, 0, readOut);
39+
}
40+
41+
var resultBuffer = msRaw.ToArray();
42+
for (var i = 0; i < resultBuffer.Length; i++)
43+
{
44+
Assert.AreEqual(inputBuffer[i], resultBuffer[i]);
45+
}
46+
}
47+
}
48+
49+
/// <summary>
50+
/// Basic compress/decompress test
51+
/// </summary>
52+
[Test]
53+
[Category("GZip")]
54+
[Category("Async")]
55+
public async Task OriginalFilenameAsync()
56+
{
57+
var content = "FileContents";
58+
59+
await using var ms = new MemoryStream();
60+
await using (var outStream = new GZipOutputStream(ms) { IsStreamOwner = false })
61+
{
62+
outStream.FileName = "/path/to/file.ext";
63+
outStream.Write(Encoding.ASCII.GetBytes(content));
64+
}
65+
66+
ms.Seek(0, SeekOrigin.Begin);
67+
68+
using (var inStream = new GZipInputStream(ms))
69+
{
70+
var readBuffer = new byte[content.Length];
71+
inStream.Read(readBuffer, 0, readBuffer.Length);
72+
Assert.AreEqual(content, Encoding.ASCII.GetString(readBuffer));
73+
Assert.AreEqual("file.ext", inStream.GetFilename());
74+
}
75+
}
76+
}
77+
#endif
78+
}

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

Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -388,92 +388,37 @@ public void FlushToUnderlyingStream()
388388

389389
[Test]
390390
[Category("GZip")]
391-
public void SmallBufferDecompression()
391+
public void SmallBufferDecompression([Values(0, 1, 3)] int seed)
392392
{
393393
var outputBufferSize = 100000;
394-
var inputBufferSize = outputBufferSize * 4;
395-
var inputBuffer = Utils.GetDummyBytes(inputBufferSize, seed: 0);
396-
397394
var outputBuffer = new byte[outputBufferSize];
395+
var inputBuffer = Utils.GetDummyBytes(outputBufferSize * 4, seed);
398396

399397
using var msGzip = new MemoryStream();
400-
using (var gzos = new GZipOutputStream(msGzip))
398+
using (var gzos = new GZipOutputStream(msGzip){IsStreamOwner = false})
401399
{
402-
gzos.IsStreamOwner = false;
403-
404400
gzos.Write(inputBuffer, 0, inputBuffer.Length);
405-
406-
gzos.Flush();
407-
gzos.Finish();
408401
}
409402

410403
msGzip.Seek(0, SeekOrigin.Begin);
411-
412-
404+
413405
using (var gzis = new GZipInputStream(msGzip))
414406
using (var msRaw = new MemoryStream())
415407
{
416-
417408
int readOut;
418409
while ((readOut = gzis.Read(outputBuffer, 0, outputBuffer.Length)) > 0)
419410
{
420411
msRaw.Write(outputBuffer, 0, readOut);
421412
}
422413

423414
var resultBuffer = msRaw.ToArray();
424-
425415
for (var i = 0; i < resultBuffer.Length; i++)
426416
{
427417
Assert.AreEqual(inputBuffer[i], resultBuffer[i]);
428418
}
429-
430-
431419
}
432420
}
433-
434-
#if NETCOREAPP3_1_OR_GREATER
435-
[Test]
436-
[Category("GZip")]
437-
[Category("Async")]
438-
public async Task SmallBufferDecompressionAsync()
439-
{
440-
var outputBufferSize = 100000;
441-
var inputBufferSize = outputBufferSize * 4;
442-
var inputBuffer = Utils.GetDummyBytes(inputBufferSize, seed: 0);
443-
444-
var outputBuffer = new byte[outputBufferSize];
445-
446-
await using var msGzip = new MemoryStream();
447-
await using (var gzos = new GZipOutputStream(msGzip){IsStreamOwner = false})
448-
{
449-
await gzos.WriteAsync(inputBuffer, 0, inputBuffer.Length);
450-
}
451-
452-
msGzip.Seek(0, SeekOrigin.Begin);
453-
454421

455-
using (var gzis = new GZipInputStream(msGzip))
456-
await using (var msRaw = new MemoryStream())
457-
{
458-
459-
int readOut;
460-
while ((readOut = await gzis.ReadAsync(outputBuffer, 0, outputBuffer.Length)) > 0)
461-
{
462-
await msRaw.WriteAsync(outputBuffer, 0, readOut);
463-
}
464-
465-
var resultBuffer = msRaw.ToArray();
466-
467-
for (var i = 0; i < resultBuffer.Length; i++)
468-
{
469-
Assert.AreEqual(inputBuffer[i], resultBuffer[i]);
470-
}
471-
472-
473-
}
474-
}
475-
#endif
476-
477422
/// <summary>
478423
/// Should gracefully handle reading from a stream that becomes unreadable after
479424
/// all of the data has been read.

0 commit comments

Comments
 (0)