Skip to content

Commit dda4c10

Browse files
committed
added ZSTD_compressStream2() + ZSTD_c_stableInBuffer test
1 parent cbff372 commit dda4c10

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

tests/zstreamtest.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,36 @@ static int basicUnitTests(U32 seed, double compressibility)
902902
} }
903903
DISPLAYLEVEL(3, "OK \n");
904904

905+
/* stableSrc + streaming */
906+
DISPLAYLEVEL(3, "test%3i : ZSTD_c_stableInBuffer compatibility with compressStream2, using different end directives : ", testNb++);
907+
CHECK_Z( ZSTD_initCStream(cctx, 1) );
908+
CHECK_Z( ZSTD_CCtx_setParameter(cctx, ZSTD_c_stableInBuffer, 1) );
909+
{ ZSTD_inBuffer inBuf;
910+
ZSTD_outBuffer outBuf;
911+
const size_t nonZeroStartPos = 18;
912+
const size_t inputSize = 500;
913+
inBuf.src = CNBuffer;
914+
inBuf.size = 100;
915+
inBuf.pos = nonZeroStartPos;
916+
outBuf.dst = (char*)(compressedBuffer)+cSize;
917+
outBuf.size = ZSTD_compressBound(inputSize);
918+
outBuf.pos = 0;
919+
CHECK_Z( ZSTD_compressStream2(cctx, &outBuf, &inBuf, ZSTD_e_continue) );
920+
inBuf.size = 200;
921+
CHECK_Z( ZSTD_compressStream2(cctx, &outBuf, &inBuf, ZSTD_e_continue) );
922+
CHECK_Z( ZSTD_compressStream2(cctx, &outBuf, &inBuf, ZSTD_e_flush) );
923+
inBuf.size = nonZeroStartPos + inputSize;
924+
CHECK_Z( ZSTD_compressStream2(cctx, &outBuf, &inBuf, ZSTD_e_continue) );
925+
CHECK( ZSTD_compressStream2(cctx, &outBuf, &inBuf, ZSTD_e_end) != 0, "compression should be successful and fully flushed");
926+
{ const void* const realSrcStart = (const char*)inBuf.src + nonZeroStartPos;
927+
void* const verifBuf = (char*)outBuf.dst + outBuf.pos;
928+
const size_t decSize = ZSTD_decompress(verifBuf, inputSize, outBuf.dst, outBuf.pos);
929+
CHECK_Z(decSize);
930+
CHECK(decSize != inputSize, "regenerated %zu bytes, instead of %zu", decSize, inputSize);
931+
CHECK(memcmp(realSrcStart, verifBuf, inputSize) != 0, "regenerated data different from original");
932+
} }
933+
DISPLAYLEVEL(3, "OK \n");
934+
905935
DISPLAYLEVEL(3, "test%3i : ZSTD_compressStream2() with ZSTD_c_stableInBuffer: context size : ", testNb++);
906936
{ size_t const cctxSize = ZSTD_sizeof_CCtx(cctx);
907937
DISPLAYLEVEL(4, "cctxSize1=%zu; cctxSize=%zu; cctxSize2=%zu : ", cctxSize1, cctxSize, cctxSize2);

0 commit comments

Comments
 (0)