@@ -4392,6 +4392,52 @@ static int basicUnitTests(U32 const seed, double compressibility)
4392
4392
} } } } }
4393
4393
DISPLAYLEVEL (3 , "OK \n" );
4394
4394
4395
+ DISPLAYLEVEL (3 , "test%3i : check reading / writing DCZ header : " , testNb ++ );
4396
+ {
4397
+ size_t i ;
4398
+ size_t readResult ;
4399
+ size_t writeResult ;
4400
+ size_t dictSize = 256 KB ;
4401
+
4402
+ for (i = 0 ; i < 100 ; i ++ ) {
4403
+ writeResult = ZSTD_writeHeaderForHTTPDCZ (
4404
+ compressedBuffer , compressedBufferSize ,
4405
+ CNBuffer , i );
4406
+ if (i >= 8 ) {
4407
+ CHECK_Z (writeResult );
4408
+ CHECK_EQ (writeResult , 40 );
4409
+ } else {
4410
+ CHECK_EQ (ZSTD_getErrorCode (writeResult ), ZSTD_error_dictionary_corrupted );
4411
+ }
4412
+ }
4413
+ for (i = 0 ; i < 100 ; i ++ ) {
4414
+ writeResult = ZSTD_writeHeaderForHTTPDCZ (
4415
+ compressedBuffer , i ,
4416
+ CNBuffer , dictSize );
4417
+ if (i >= 40 ) {
4418
+ CHECK_Z (writeResult );
4419
+ CHECK_EQ (writeResult , 40 );
4420
+ } else {
4421
+ CHECK_EQ (ZSTD_getErrorCode (writeResult ), ZSTD_error_dstSize_tooSmall );
4422
+ }
4423
+ }
4424
+ for (i = 0 ; i < 100 ; i ++ ) {
4425
+ readResult = ZSTD_readHeaderForHTTPDCZ_validateDictMatches (
4426
+ compressedBuffer , i ,
4427
+ CNBuffer , dictSize );
4428
+ if (i >= writeResult ) {
4429
+ CHECK_Z (readResult );
4430
+ CHECK_EQ (readResult , 1 );
4431
+ } else {
4432
+ CHECK_EQ (ZSTD_getErrorCode (readResult ), ZSTD_error_srcSize_wrong );
4433
+ }
4434
+ }
4435
+ CHECK_EQ (ZSTD_getErrorCode (ZSTD_readHeaderForHTTPDCZ_validateDictMatches (
4436
+ compressedBuffer , writeResult ,
4437
+ CNBuffer , dictSize - 1 )), ZSTD_error_dictionary_wrong );
4438
+ }
4439
+ DISPLAYLEVEL (3 , "OK \n" );
4440
+
4395
4441
DISPLAYLEVEL (3 , "test%3i : thread pool API tests : \n" , testNb ++ )
4396
4442
{
4397
4443
int const threadPoolTestResult = threadPoolTests ();
0 commit comments