diff options
author | Daniel Lowrey <rdlowrey@php.net> | 2015-04-21 23:02:34 -0600 |
---|---|---|
committer | Daniel Lowrey <rdlowrey@php.net> | 2015-04-23 23:49:41 -0600 |
commit | 4d5324088c3e020cf7abc44e27d857c042166b90 (patch) | |
tree | 786f9a23032b640fde3d1b5841d27c75e36a0702 /ext | |
parent | daecc326188d7d3ced05e42f0c07ded4e9b130aa (diff) | |
download | php-git-4d5324088c3e020cf7abc44e27d857c042166b90.tar.gz |
Add deflate_*() test cases
Diffstat (limited to 'ext')
-rw-r--r-- | ext/zlib/tests/deflate_add_basic.phpt | 66 | ||||
-rw-r--r-- | ext/zlib/tests/deflate_add_error.phpt | 24 | ||||
-rw-r--r-- | ext/zlib/tests/deflate_init_error.phpt | 32 | ||||
-rw-r--r-- | ext/zlib/tests/deflate_init_reuse.phpt | 28 |
4 files changed, 150 insertions, 0 deletions
diff --git a/ext/zlib/tests/deflate_add_basic.phpt b/ext/zlib/tests/deflate_add_basic.phpt new file mode 100644 index 0000000000..9f48bb0448 --- /dev/null +++ b/ext/zlib/tests/deflate_add_basic.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test incremental deflate_add() functionality +--SKIPIF-- +<?php +if (!extension_loaded("zlib")) { + print "skip - ZLIB extension not loaded"; +} +?> +--FILE-- +<?php + +function deflateStream($mode, $flushSize, $flushType) { + $buffer = ""; + $deflated = null; + $resource = deflate_init($mode); + + while (true) { + $dataToCompress = yield $deflated; + if (isset($dataToCompress)) { + $buffer .= $dataToCompress; + if (strlen($buffer) >= $flushSize) { + $deflated = deflate_add($resource, $buffer, $flushType); + $buffer = ""; + } else { + $deflated = null; + } + } else { + $deflated = deflate_add($resource, $buffer, ZLIB_FINISH); + } + } +} + +$modes = [ + 'ZLIB_ENCODING_RAW' => ZLIB_ENCODING_RAW, + 'ZLIB_ENCODING_GZIP' => ZLIB_ENCODING_GZIP, + 'ZLIB_ENCODING_DEFLATE' => ZLIB_ENCODING_DEFLATE, +]; +$flushSizes = [1, 4, 32768]; +$flushTypes = [ + 'ZLIB_SYNC_FLUSH' => ZLIB_SYNC_FLUSH, + 'ZLIB_PARTIAL_FLUSH' => ZLIB_PARTIAL_FLUSH, + 'ZLIB_FULL_FLUSH' => ZLIB_FULL_FLUSH, + 'ZLIB_NO_FLUSH' => ZLIB_NO_FLUSH, + 'ZLIB_BLOCK' => ZLIB_BLOCK, +]; + +foreach ($modes as $modeKey => $mode) { + foreach ($flushSizes as $flushSize) { + foreach ($flushTypes as $flushTypeKey => $flushType) { + $uncompressed = $compressed = ""; + $stream = deflateStream($mode, $flushSize, $flushType); + foreach (range("a", "z") as $c) { + $uncompressed .= $c; + $compressed .= $stream->send($c); + } + $compressed .= $stream->send(null); + if ($uncompressed !== zlib_decode($compressed)) { + echo "Error: {$modeKey} | {$flushSize} | {$flushTypeKey}\n"; + } + } + } +} +?> +===DONE=== +--EXPECTF-- +===DONE=== diff --git a/ext/zlib/tests/deflate_add_error.phpt b/ext/zlib/tests/deflate_add_error.phpt new file mode 100644 index 0000000000..159f1648c9 --- /dev/null +++ b/ext/zlib/tests/deflate_add_error.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test incremental deflate_add() error functionality +--SKIPIF-- +<?php +if (!extension_loaded("zlib")) { + print "skip - ZLIB extension not loaded"; +} +?> +--FILE-- +<?php +$badResource = fopen("php://memory", "r+"); +var_dump(deflate_add($badResource, "test")); + +$resource = deflate_init(ZLIB_ENCODING_DEFLATE); +$badFlushType = 6789; +var_dump(deflate_add($resource, "test", $badFlushType)); +?> +--EXPECTF-- + +Warning: deflate_add(): Invalid deflate resource in %s on line %d +bool(false) + +Warning: deflate_add(): flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH in %s on line %d +bool(false) diff --git a/ext/zlib/tests/deflate_init_error.phpt b/ext/zlib/tests/deflate_init_error.phpt new file mode 100644 index 0000000000..424272c124 --- /dev/null +++ b/ext/zlib/tests/deflate_init_error.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test deflate_init() error +--SKIPIF-- +<?php +if (!extension_loaded("zlib")) { + print "skip - ZLIB extension not loaded"; +} +?> +--FILE-- +<?php +var_dump(deflate_init(42)); +var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => 42])); +var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => -2])); +var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 0])); +var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 10])); +?> +--EXPECTF-- + +Warning: deflate_init(): encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d +bool(false) + +Warning: deflate_init(): compression level (42) must be within -1..9 in %s on line %d +bool(false) + +Warning: deflate_init(): compression level (-2) must be within -1..9 in %s on line %d +bool(false) + +Warning: deflate_init(): compression memory level (0) must be within 1..9 in %s on line %d +bool(false) + +Warning: deflate_init(): compression memory level (10) must be within 1..9 in %s on line %d +bool(false) diff --git a/ext/zlib/tests/deflate_init_reuse.phpt b/ext/zlib/tests/deflate_init_reuse.phpt new file mode 100644 index 0000000000..b351f496f7 --- /dev/null +++ b/ext/zlib/tests/deflate_init_reuse.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test incremental deflate_init() context reuse +--SKIPIF-- +<?php +if (!extension_loaded("zlib")) { + print "skip - ZLIB extension not loaded"; +} +?> +--FILE-- +<?php +$resource = deflate_init(ZLIB_ENCODING_DEFLATE); +foreach (range("a", "z") as $char) { + deflate_add($resource, $char); +} +deflate_add($resource, "", ZLIB_FINISH); + +// Now reuse the existing resource after finishing the previous operations ... +$uncompressed = $compressed = ""; +foreach (range("a", "z") as $char) { + $uncompressed .= $char; + $compressed .= deflate_add($resource, $char, ZLIB_NO_FLUSH); +} +$compressed .= deflate_add($resource, "", ZLIB_FINISH); +assert($uncompressed === zlib_decode($compressed)); +?> +===DONE=== +--EXPECTF-- +===DONE=== |