cannam@128: (* example.c -- usage example of the zlib compression library cannam@128: * Copyright (C) 1995-2003 Jean-loup Gailly. cannam@128: * For conditions of distribution and use, see copyright notice in zlib.h cannam@128: * cannam@128: * Pascal translation cannam@128: * Copyright (C) 1998 by Jacques Nomssi Nzali. cannam@128: * For conditions of distribution and use, see copyright notice in readme.txt cannam@128: * cannam@128: * Adaptation to the zlibpas interface cannam@128: * Copyright (C) 2003 by Cosmin Truta. cannam@128: * For conditions of distribution and use, see copyright notice in readme.txt cannam@128: *) cannam@128: cannam@128: program example; cannam@128: cannam@128: {$DEFINE TEST_COMPRESS} cannam@128: {DO NOT $DEFINE TEST_GZIO} cannam@128: {$DEFINE TEST_DEFLATE} cannam@128: {$DEFINE TEST_INFLATE} cannam@128: {$DEFINE TEST_FLUSH} cannam@128: {$DEFINE TEST_SYNC} cannam@128: {$DEFINE TEST_DICT} cannam@128: cannam@128: uses SysUtils, zlibpas; cannam@128: cannam@128: const TESTFILE = 'foo.gz'; cannam@128: cannam@128: (* "hello world" would be more standard, but the repeated "hello" cannam@128: * stresses the compression code better, sorry... cannam@128: *) cannam@128: const hello: PChar = 'hello, hello!'; cannam@128: cannam@128: const dictionary: PChar = 'hello'; cannam@128: cannam@128: var dictId: LongInt; (* Adler32 value of the dictionary *) cannam@128: cannam@128: procedure CHECK_ERR(err: Integer; msg: String); cannam@128: begin cannam@128: if err <> Z_OK then cannam@128: begin cannam@128: WriteLn(msg, ' error: ', err); cannam@128: Halt(1); cannam@128: end; cannam@128: end; cannam@128: cannam@128: procedure EXIT_ERR(const msg: String); cannam@128: begin cannam@128: WriteLn('Error: ', msg); cannam@128: Halt(1); cannam@128: end; cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test compress and uncompress cannam@128: *) cannam@128: {$IFDEF TEST_COMPRESS} cannam@128: procedure test_compress(compr: Pointer; comprLen: LongInt; cannam@128: uncompr: Pointer; uncomprLen: LongInt); cannam@128: var err: Integer; cannam@128: len: LongInt; cannam@128: begin cannam@128: len := StrLen(hello)+1; cannam@128: cannam@128: err := compress(compr, comprLen, hello, len); cannam@128: CHECK_ERR(err, 'compress'); cannam@128: cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: err := uncompress(uncompr, uncomprLen, compr, comprLen); cannam@128: CHECK_ERR(err, 'uncompress'); cannam@128: cannam@128: if StrComp(PChar(uncompr), hello) <> 0 then cannam@128: EXIT_ERR('bad uncompress') cannam@128: else cannam@128: WriteLn('uncompress(): ', PChar(uncompr)); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test read/write of .gz files cannam@128: *) cannam@128: {$IFDEF TEST_GZIO} cannam@128: procedure test_gzio(const fname: PChar; (* compressed file name *) cannam@128: uncompr: Pointer; cannam@128: uncomprLen: LongInt); cannam@128: var err: Integer; cannam@128: len: Integer; cannam@128: zfile: gzFile; cannam@128: pos: LongInt; cannam@128: begin cannam@128: len := StrLen(hello)+1; cannam@128: cannam@128: zfile := gzopen(fname, 'wb'); cannam@128: if zfile = NIL then cannam@128: begin cannam@128: WriteLn('gzopen error'); cannam@128: Halt(1); cannam@128: end; cannam@128: gzputc(zfile, 'h'); cannam@128: if gzputs(zfile, 'ello') <> 4 then cannam@128: begin cannam@128: WriteLn('gzputs err: ', gzerror(zfile, err)); cannam@128: Halt(1); cannam@128: end; cannam@128: {$IFDEF GZ_FORMAT_STRING} cannam@128: if gzprintf(zfile, ', %s!', 'hello') <> 8 then cannam@128: begin cannam@128: WriteLn('gzprintf err: ', gzerror(zfile, err)); cannam@128: Halt(1); cannam@128: end; cannam@128: {$ELSE} cannam@128: if gzputs(zfile, ', hello!') <> 8 then cannam@128: begin cannam@128: WriteLn('gzputs err: ', gzerror(zfile, err)); cannam@128: Halt(1); cannam@128: end; cannam@128: {$ENDIF} cannam@128: gzseek(zfile, 1, SEEK_CUR); (* add one zero byte *) cannam@128: gzclose(zfile); cannam@128: cannam@128: zfile := gzopen(fname, 'rb'); cannam@128: if zfile = NIL then cannam@128: begin cannam@128: WriteLn('gzopen error'); cannam@128: Halt(1); cannam@128: end; cannam@128: cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: if gzread(zfile, uncompr, uncomprLen) <> len then cannam@128: begin cannam@128: WriteLn('gzread err: ', gzerror(zfile, err)); cannam@128: Halt(1); cannam@128: end; cannam@128: if StrComp(PChar(uncompr), hello) <> 0 then cannam@128: begin cannam@128: WriteLn('bad gzread: ', PChar(uncompr)); cannam@128: Halt(1); cannam@128: end cannam@128: else cannam@128: WriteLn('gzread(): ', PChar(uncompr)); cannam@128: cannam@128: pos := gzseek(zfile, -8, SEEK_CUR); cannam@128: if (pos <> 6) or (gztell(zfile) <> pos) then cannam@128: begin cannam@128: WriteLn('gzseek error, pos=', pos, ', gztell=', gztell(zfile)); cannam@128: Halt(1); cannam@128: end; cannam@128: cannam@128: if gzgetc(zfile) <> ' ' then cannam@128: begin cannam@128: WriteLn('gzgetc error'); cannam@128: Halt(1); cannam@128: end; cannam@128: cannam@128: if gzungetc(' ', zfile) <> ' ' then cannam@128: begin cannam@128: WriteLn('gzungetc error'); cannam@128: Halt(1); cannam@128: end; cannam@128: cannam@128: gzgets(zfile, PChar(uncompr), uncomprLen); cannam@128: uncomprLen := StrLen(PChar(uncompr)); cannam@128: if uncomprLen <> 7 then (* " hello!" *) cannam@128: begin cannam@128: WriteLn('gzgets err after gzseek: ', gzerror(zfile, err)); cannam@128: Halt(1); cannam@128: end; cannam@128: if StrComp(PChar(uncompr), hello + 6) <> 0 then cannam@128: begin cannam@128: WriteLn('bad gzgets after gzseek'); cannam@128: Halt(1); cannam@128: end cannam@128: else cannam@128: WriteLn('gzgets() after gzseek: ', PChar(uncompr)); cannam@128: cannam@128: gzclose(zfile); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test deflate with small buffers cannam@128: *) cannam@128: {$IFDEF TEST_DEFLATE} cannam@128: procedure test_deflate(compr: Pointer; comprLen: LongInt); cannam@128: var c_stream: z_stream; (* compression stream *) cannam@128: err: Integer; cannam@128: len: LongInt; cannam@128: begin cannam@128: len := StrLen(hello)+1; cannam@128: cannam@128: c_stream.zalloc := NIL; cannam@128: c_stream.zfree := NIL; cannam@128: c_stream.opaque := NIL; cannam@128: cannam@128: err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); cannam@128: CHECK_ERR(err, 'deflateInit'); cannam@128: cannam@128: c_stream.next_in := hello; cannam@128: c_stream.next_out := compr; cannam@128: cannam@128: while (c_stream.total_in <> len) and cannam@128: (c_stream.total_out < comprLen) do cannam@128: begin cannam@128: c_stream.avail_out := 1; { force small buffers } cannam@128: c_stream.avail_in := 1; cannam@128: err := deflate(c_stream, Z_NO_FLUSH); cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: end; cannam@128: cannam@128: (* Finish the stream, still forcing small buffers: *) cannam@128: while TRUE do cannam@128: begin cannam@128: c_stream.avail_out := 1; cannam@128: err := deflate(c_stream, Z_FINISH); cannam@128: if err = Z_STREAM_END then cannam@128: break; cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: end; cannam@128: cannam@128: err := deflateEnd(c_stream); cannam@128: CHECK_ERR(err, 'deflateEnd'); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test inflate with small buffers cannam@128: *) cannam@128: {$IFDEF TEST_INFLATE} cannam@128: procedure test_inflate(compr: Pointer; comprLen : LongInt; cannam@128: uncompr: Pointer; uncomprLen : LongInt); cannam@128: var err: Integer; cannam@128: d_stream: z_stream; (* decompression stream *) cannam@128: begin cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: d_stream.zalloc := NIL; cannam@128: d_stream.zfree := NIL; cannam@128: d_stream.opaque := NIL; cannam@128: cannam@128: d_stream.next_in := compr; cannam@128: d_stream.avail_in := 0; cannam@128: d_stream.next_out := uncompr; cannam@128: cannam@128: err := inflateInit(d_stream); cannam@128: CHECK_ERR(err, 'inflateInit'); cannam@128: cannam@128: while (d_stream.total_out < uncomprLen) and cannam@128: (d_stream.total_in < comprLen) do cannam@128: begin cannam@128: d_stream.avail_out := 1; (* force small buffers *) cannam@128: d_stream.avail_in := 1; cannam@128: err := inflate(d_stream, Z_NO_FLUSH); cannam@128: if err = Z_STREAM_END then cannam@128: break; cannam@128: CHECK_ERR(err, 'inflate'); cannam@128: end; cannam@128: cannam@128: err := inflateEnd(d_stream); cannam@128: CHECK_ERR(err, 'inflateEnd'); cannam@128: cannam@128: if StrComp(PChar(uncompr), hello) <> 0 then cannam@128: EXIT_ERR('bad inflate') cannam@128: else cannam@128: WriteLn('inflate(): ', PChar(uncompr)); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test deflate with large buffers and dynamic change of compression level cannam@128: *) cannam@128: {$IFDEF TEST_DEFLATE} cannam@128: procedure test_large_deflate(compr: Pointer; comprLen: LongInt; cannam@128: uncompr: Pointer; uncomprLen: LongInt); cannam@128: var c_stream: z_stream; (* compression stream *) cannam@128: err: Integer; cannam@128: begin cannam@128: c_stream.zalloc := NIL; cannam@128: c_stream.zfree := NIL; cannam@128: c_stream.opaque := NIL; cannam@128: cannam@128: err := deflateInit(c_stream, Z_BEST_SPEED); cannam@128: CHECK_ERR(err, 'deflateInit'); cannam@128: cannam@128: c_stream.next_out := compr; cannam@128: c_stream.avail_out := Integer(comprLen); cannam@128: cannam@128: (* At this point, uncompr is still mostly zeroes, so it should compress cannam@128: * very well: cannam@128: *) cannam@128: c_stream.next_in := uncompr; cannam@128: c_stream.avail_in := Integer(uncomprLen); cannam@128: err := deflate(c_stream, Z_NO_FLUSH); cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: if c_stream.avail_in <> 0 then cannam@128: EXIT_ERR('deflate not greedy'); cannam@128: cannam@128: (* Feed in already compressed data and switch to no compression: *) cannam@128: deflateParams(c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); cannam@128: c_stream.next_in := compr; cannam@128: c_stream.avail_in := Integer(comprLen div 2); cannam@128: err := deflate(c_stream, Z_NO_FLUSH); cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: cannam@128: (* Switch back to compressing mode: *) cannam@128: deflateParams(c_stream, Z_BEST_COMPRESSION, Z_FILTERED); cannam@128: c_stream.next_in := uncompr; cannam@128: c_stream.avail_in := Integer(uncomprLen); cannam@128: err := deflate(c_stream, Z_NO_FLUSH); cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: cannam@128: err := deflate(c_stream, Z_FINISH); cannam@128: if err <> Z_STREAM_END then cannam@128: EXIT_ERR('deflate should report Z_STREAM_END'); cannam@128: cannam@128: err := deflateEnd(c_stream); cannam@128: CHECK_ERR(err, 'deflateEnd'); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test inflate with large buffers cannam@128: *) cannam@128: {$IFDEF TEST_INFLATE} cannam@128: procedure test_large_inflate(compr: Pointer; comprLen: LongInt; cannam@128: uncompr: Pointer; uncomprLen: LongInt); cannam@128: var err: Integer; cannam@128: d_stream: z_stream; (* decompression stream *) cannam@128: begin cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: d_stream.zalloc := NIL; cannam@128: d_stream.zfree := NIL; cannam@128: d_stream.opaque := NIL; cannam@128: cannam@128: d_stream.next_in := compr; cannam@128: d_stream.avail_in := Integer(comprLen); cannam@128: cannam@128: err := inflateInit(d_stream); cannam@128: CHECK_ERR(err, 'inflateInit'); cannam@128: cannam@128: while TRUE do cannam@128: begin cannam@128: d_stream.next_out := uncompr; (* discard the output *) cannam@128: d_stream.avail_out := Integer(uncomprLen); cannam@128: err := inflate(d_stream, Z_NO_FLUSH); cannam@128: if err = Z_STREAM_END then cannam@128: break; cannam@128: CHECK_ERR(err, 'large inflate'); cannam@128: end; cannam@128: cannam@128: err := inflateEnd(d_stream); cannam@128: CHECK_ERR(err, 'inflateEnd'); cannam@128: cannam@128: if d_stream.total_out <> 2 * uncomprLen + comprLen div 2 then cannam@128: begin cannam@128: WriteLn('bad large inflate: ', d_stream.total_out); cannam@128: Halt(1); cannam@128: end cannam@128: else cannam@128: WriteLn('large_inflate(): OK'); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test deflate with full flush cannam@128: *) cannam@128: {$IFDEF TEST_FLUSH} cannam@128: procedure test_flush(compr: Pointer; var comprLen : LongInt); cannam@128: var c_stream: z_stream; (* compression stream *) cannam@128: err: Integer; cannam@128: len: Integer; cannam@128: begin cannam@128: len := StrLen(hello)+1; cannam@128: cannam@128: c_stream.zalloc := NIL; cannam@128: c_stream.zfree := NIL; cannam@128: c_stream.opaque := NIL; cannam@128: cannam@128: err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); cannam@128: CHECK_ERR(err, 'deflateInit'); cannam@128: cannam@128: c_stream.next_in := hello; cannam@128: c_stream.next_out := compr; cannam@128: c_stream.avail_in := 3; cannam@128: c_stream.avail_out := Integer(comprLen); cannam@128: err := deflate(c_stream, Z_FULL_FLUSH); cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: cannam@128: Inc(PByteArray(compr)^[3]); (* force an error in first compressed block *) cannam@128: c_stream.avail_in := len - 3; cannam@128: cannam@128: err := deflate(c_stream, Z_FINISH); cannam@128: if err <> Z_STREAM_END then cannam@128: CHECK_ERR(err, 'deflate'); cannam@128: cannam@128: err := deflateEnd(c_stream); cannam@128: CHECK_ERR(err, 'deflateEnd'); cannam@128: cannam@128: comprLen := c_stream.total_out; cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test inflateSync() cannam@128: *) cannam@128: {$IFDEF TEST_SYNC} cannam@128: procedure test_sync(compr: Pointer; comprLen: LongInt; cannam@128: uncompr: Pointer; uncomprLen : LongInt); cannam@128: var err: Integer; cannam@128: d_stream: z_stream; (* decompression stream *) cannam@128: begin cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: d_stream.zalloc := NIL; cannam@128: d_stream.zfree := NIL; cannam@128: d_stream.opaque := NIL; cannam@128: cannam@128: d_stream.next_in := compr; cannam@128: d_stream.avail_in := 2; (* just read the zlib header *) cannam@128: cannam@128: err := inflateInit(d_stream); cannam@128: CHECK_ERR(err, 'inflateInit'); cannam@128: cannam@128: d_stream.next_out := uncompr; cannam@128: d_stream.avail_out := Integer(uncomprLen); cannam@128: cannam@128: inflate(d_stream, Z_NO_FLUSH); cannam@128: CHECK_ERR(err, 'inflate'); cannam@128: cannam@128: d_stream.avail_in := Integer(comprLen-2); (* read all compressed data *) cannam@128: err := inflateSync(d_stream); (* but skip the damaged part *) cannam@128: CHECK_ERR(err, 'inflateSync'); cannam@128: cannam@128: err := inflate(d_stream, Z_FINISH); cannam@128: if err <> Z_DATA_ERROR then cannam@128: EXIT_ERR('inflate should report DATA_ERROR'); cannam@128: (* Because of incorrect adler32 *) cannam@128: cannam@128: err := inflateEnd(d_stream); cannam@128: CHECK_ERR(err, 'inflateEnd'); cannam@128: cannam@128: WriteLn('after inflateSync(): hel', PChar(uncompr)); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test deflate with preset dictionary cannam@128: *) cannam@128: {$IFDEF TEST_DICT} cannam@128: procedure test_dict_deflate(compr: Pointer; comprLen: LongInt); cannam@128: var c_stream: z_stream; (* compression stream *) cannam@128: err: Integer; cannam@128: begin cannam@128: c_stream.zalloc := NIL; cannam@128: c_stream.zfree := NIL; cannam@128: c_stream.opaque := NIL; cannam@128: cannam@128: err := deflateInit(c_stream, Z_BEST_COMPRESSION); cannam@128: CHECK_ERR(err, 'deflateInit'); cannam@128: cannam@128: err := deflateSetDictionary(c_stream, dictionary, StrLen(dictionary)); cannam@128: CHECK_ERR(err, 'deflateSetDictionary'); cannam@128: cannam@128: dictId := c_stream.adler; cannam@128: c_stream.next_out := compr; cannam@128: c_stream.avail_out := Integer(comprLen); cannam@128: cannam@128: c_stream.next_in := hello; cannam@128: c_stream.avail_in := StrLen(hello)+1; cannam@128: cannam@128: err := deflate(c_stream, Z_FINISH); cannam@128: if err <> Z_STREAM_END then cannam@128: EXIT_ERR('deflate should report Z_STREAM_END'); cannam@128: cannam@128: err := deflateEnd(c_stream); cannam@128: CHECK_ERR(err, 'deflateEnd'); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: (* =========================================================================== cannam@128: * Test inflate with a preset dictionary cannam@128: *) cannam@128: {$IFDEF TEST_DICT} cannam@128: procedure test_dict_inflate(compr: Pointer; comprLen: LongInt; cannam@128: uncompr: Pointer; uncomprLen: LongInt); cannam@128: var err: Integer; cannam@128: d_stream: z_stream; (* decompression stream *) cannam@128: begin cannam@128: StrCopy(PChar(uncompr), 'garbage'); cannam@128: cannam@128: d_stream.zalloc := NIL; cannam@128: d_stream.zfree := NIL; cannam@128: d_stream.opaque := NIL; cannam@128: cannam@128: d_stream.next_in := compr; cannam@128: d_stream.avail_in := Integer(comprLen); cannam@128: cannam@128: err := inflateInit(d_stream); cannam@128: CHECK_ERR(err, 'inflateInit'); cannam@128: cannam@128: d_stream.next_out := uncompr; cannam@128: d_stream.avail_out := Integer(uncomprLen); cannam@128: cannam@128: while TRUE do cannam@128: begin cannam@128: err := inflate(d_stream, Z_NO_FLUSH); cannam@128: if err = Z_STREAM_END then cannam@128: break; cannam@128: if err = Z_NEED_DICT then cannam@128: begin cannam@128: if d_stream.adler <> dictId then cannam@128: EXIT_ERR('unexpected dictionary'); cannam@128: err := inflateSetDictionary(d_stream, dictionary, StrLen(dictionary)); cannam@128: end; cannam@128: CHECK_ERR(err, 'inflate with dict'); cannam@128: end; cannam@128: cannam@128: err := inflateEnd(d_stream); cannam@128: CHECK_ERR(err, 'inflateEnd'); cannam@128: cannam@128: if StrComp(PChar(uncompr), hello) <> 0 then cannam@128: EXIT_ERR('bad inflate with dict') cannam@128: else cannam@128: WriteLn('inflate with dictionary: ', PChar(uncompr)); cannam@128: end; cannam@128: {$ENDIF} cannam@128: cannam@128: var compr, uncompr: Pointer; cannam@128: comprLen, uncomprLen: LongInt; cannam@128: cannam@128: begin cannam@128: if zlibVersion^ <> ZLIB_VERSION[1] then cannam@128: EXIT_ERR('Incompatible zlib version'); cannam@128: cannam@128: WriteLn('zlib version: ', zlibVersion); cannam@128: WriteLn('zlib compile flags: ', Format('0x%x', [zlibCompileFlags])); cannam@128: cannam@128: comprLen := 10000 * SizeOf(Integer); (* don't overflow on MSDOS *) cannam@128: uncomprLen := comprLen; cannam@128: GetMem(compr, comprLen); cannam@128: GetMem(uncompr, uncomprLen); cannam@128: if (compr = NIL) or (uncompr = NIL) then cannam@128: EXIT_ERR('Out of memory'); cannam@128: (* compr and uncompr are cleared to avoid reading uninitialized cannam@128: * data and to ensure that uncompr compresses well. cannam@128: *) cannam@128: FillChar(compr^, comprLen, 0); cannam@128: FillChar(uncompr^, uncomprLen, 0); cannam@128: cannam@128: {$IFDEF TEST_COMPRESS} cannam@128: WriteLn('** Testing compress'); cannam@128: test_compress(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: cannam@128: {$IFDEF TEST_GZIO} cannam@128: WriteLn('** Testing gzio'); cannam@128: if ParamCount >= 1 then cannam@128: test_gzio(ParamStr(1), uncompr, uncomprLen) cannam@128: else cannam@128: test_gzio(TESTFILE, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: cannam@128: {$IFDEF TEST_DEFLATE} cannam@128: WriteLn('** Testing deflate with small buffers'); cannam@128: test_deflate(compr, comprLen); cannam@128: {$ENDIF} cannam@128: {$IFDEF TEST_INFLATE} cannam@128: WriteLn('** Testing inflate with small buffers'); cannam@128: test_inflate(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: cannam@128: {$IFDEF TEST_DEFLATE} cannam@128: WriteLn('** Testing deflate with large buffers'); cannam@128: test_large_deflate(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: {$IFDEF TEST_INFLATE} cannam@128: WriteLn('** Testing inflate with large buffers'); cannam@128: test_large_inflate(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: cannam@128: {$IFDEF TEST_FLUSH} cannam@128: WriteLn('** Testing deflate with full flush'); cannam@128: test_flush(compr, comprLen); cannam@128: {$ENDIF} cannam@128: {$IFDEF TEST_SYNC} cannam@128: WriteLn('** Testing inflateSync'); cannam@128: test_sync(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: comprLen := uncomprLen; cannam@128: cannam@128: {$IFDEF TEST_DICT} cannam@128: WriteLn('** Testing deflate and inflate with preset dictionary'); cannam@128: test_dict_deflate(compr, comprLen); cannam@128: test_dict_inflate(compr, comprLen, uncompr, uncomprLen); cannam@128: {$ENDIF} cannam@128: cannam@128: FreeMem(compr, comprLen); cannam@128: FreeMem(uncompr, uncomprLen); cannam@128: end.