11using MemoryPack . Compression ;
22using System ;
3+ using System . Buffers ;
4+ using System . IO . Compression ;
35
46namespace MemoryPack . Tests ;
57
@@ -14,6 +16,44 @@ public void LargeByteArray()
1416 data . MemDecmpDeserialize ( bin ) ;
1517 }
1618
19+ [ Fact ]
20+ public void EncodeEmptyCntent ( )
21+ {
22+ var buffer = new ArrayBufferWriter < byte > ( ) ;
23+ using var state = MemoryPackWriterOptionalStatePool . Rent ( null ) ;
24+ var writer = new MemoryPackWriter < ArrayBufferWriter < byte > > ( ref buffer , state ) ;
25+
26+ using var compressor = new BrotliCompressor ( CompressionLevel . Fastest ) ;
27+ compressor . CopyTo ( ref writer ) ;
28+
29+ using var decompressor = new BrotliDecompressor ( ) ;
30+ decompressor . Decompress ( compressor . ToArray ( ) ) . ToArray ( ) . Should ( ) . BeEmpty ( ) ;
31+ }
32+
33+ [ Fact ]
34+ public void EncodeEmptyFinalBlock ( )
35+ {
36+ using var state = MemoryPackWriterOptionalStatePool . Rent ( null ) ;
37+
38+ var compressor = new BrotliCompressor ( CompressionLevel . Fastest ) ;
39+ var coWriter = new MemoryPackWriter < BrotliCompressor > ( ref compressor , state ) ;
40+
41+ var bytes = new byte [ 248 ] ;
42+ Random . Shared . NextBytes ( bytes ) ;
43+ coWriter . WriteUnmanagedArray ( bytes ) ;
44+ coWriter . Flush ( ) ;
45+
46+ var buffer = new ArrayBufferWriter < byte > ( ) ;
47+ compressor . CopyTo ( buffer ) ;
48+
49+ using var readerState = MemoryPackReaderOptionalStatePool . Rent ( null ) ;
50+ using var decompressor = new BrotliDecompressor ( ) ;
51+ var decompressed = decompressor . Decompress ( compressor . ToArray ( ) ) ;
52+ var reader = new MemoryPackReader ( in decompressed , readerState ) ;
53+
54+ reader . ReadArray < byte > ( ) . Should ( ) . BeEquivalentTo ( bytes ) ;
55+ compressor . Dispose ( ) ;
56+ }
1757}
1858
1959[ MemoryPackable ]
0 commit comments