diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/standard/tests/filters | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/standard/tests/filters')
18 files changed, 747 insertions, 0 deletions
diff --git a/ext/standard/tests/filters/001.phpt b/ext/standard/tests/filters/001.phpt new file mode 100644 index 0000000..afbcdcf --- /dev/null +++ b/ext/standard/tests/filters/001.phpt @@ -0,0 +1,31 @@ +--TEST-- +stream_filter_register() and invalid arguments +--FILE-- +<?php + +var_dump(stream_filter_register("", "")); +var_dump(stream_filter_register("test", "")); +var_dump(stream_filter_register("", "test")); +var_dump(stream_filter_register("------", "nonexistentclass")); +var_dump(stream_filter_register(array(), "aa")); +var_dump(stream_filter_register("", array())); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d +bool(false) + +Warning: stream_filter_register(): Class name cannot be empty in %s on line %d +bool(false) + +Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d +bool(false) +bool(true) + +Warning: stream_filter_register() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: stream_filter_register() expects parameter 2 to be string, array given in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/filters/basic.phpt b/ext/standard/tests/filters/basic.phpt new file mode 100644 index 0000000..13a79e2 --- /dev/null +++ b/ext/standard/tests/filters/basic.phpt @@ -0,0 +1,44 @@ +--TEST-- +basic stream filter tests +--FILE-- +<?php +# vim600:syn=php: + +$text = "Hello There!"; +$filters = array("string.rot13", "string.toupper", "string.tolower"); + +function filter_test($names) +{ + $fp = tmpfile(); + fwrite($fp, $GLOBALS["text"]); + rewind($fp); + foreach ($names as $name) { + echo "filter: $name\n"; + var_dump(stream_filter_prepend($fp, $name)); + } + var_dump(fgets($fp)); + fclose($fp); +} + +foreach ($filters as $filter) { + filter_test(array($filter)); +} + +filter_test(array($filters[0], $filters[1])); + +?> +--EXPECTF-- +filter: string.rot13 +resource(%d) of type (stream filter) +string(12) "Uryyb Gurer!" +filter: string.toupper +resource(%d) of type (stream filter) +string(12) "HELLO THERE!" +filter: string.tolower +resource(%d) of type (stream filter) +string(12) "hello there!" +filter: string.rot13 +resource(%d) of type (stream filter) +filter: string.toupper +resource(%d) of type (stream filter) +string(12) "URYYB GURER!" diff --git a/ext/standard/tests/filters/bug22538.phpt b/ext/standard/tests/filters/bug22538.phpt new file mode 100644 index 0000000..438b5be --- /dev/null +++ b/ext/standard/tests/filters/bug22538.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #22538 (filtered stream doesn't update file pointer) +--FILE-- +<?php +function my_stream_copy_to_stream($fin, $fout) { + while (!feof($fin)) { + fwrite($fout, fread($fin, 4096)); + } +} + +$size = 65536; + +do { + $path1 = sprintf("%s/%s%da", dirname(__FILE__), uniqid(), time()); + $path2 = sprintf("%s/%s%db", dirname(__FILE__), uniqid(), time()); +} while ($path1 == $path2); + +$fp = fopen($path1, "w") or die("Can not open $path1\n"); +$str = "abcdefghijklmnopqrstuvwxyz\n"; +$str_len = strlen($str); +$cnt = $size; +while (($cnt -= $str_len) > 0) { + fwrite($fp, $str); +} +$cnt = $size - ($str_len + $cnt); +fclose($fp); +$fin = fopen($path1, "r") or die("Can not open $path1\n");; +$fout = fopen($path2, "w") or die("Can not open $path2\n");; +stream_filter_append($fout, "string.rot13"); +my_stream_copy_to_stream($fin, $fout); +fclose($fout); +fclose($fin); +var_dump($cnt); +var_dump(filesize($path2)); +var_dump(md5_file($path1)); +var_dump(md5_file($path2)); +unlink($path1); +unlink($path2); +?> +--EXPECT-- +int(65529) +int(65529) +string(32) "e10e3d1ae81b084b822e8592d019b57a" +string(32) "931f0fbf8a72312e3bab9965b1d1081c" diff --git a/ext/standard/tests/filters/bug35916.phpt b/ext/standard/tests/filters/bug35916.phpt new file mode 100644 index 0000000..4d2027d --- /dev/null +++ b/ext/standard/tests/filters/bug35916.phpt @@ -0,0 +1,42 @@ +--TEST-- +Bug #35916 (Duplicate calls to stream_bucket_append() lead to a crash) +--FILE-- +<?php +$file = dirname(__FILE__) . "/bug35916.txt"; +@unlink($file); + +class strtoupper_filter extends php_user_filter +{ + function filter($in, $out, &$consumed, $closing) + { + while($bucket=stream_bucket_make_writeable($in)) { + $bucket->data = strtoupper($bucket->data); + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + stream_bucket_append($out, $bucket); + } + return PSFS_PASS_ON; + } + function onCreate() + { + echo "fffffffffff\n"; + } + function onClose() + { + echo "hello\n"; + } +} + +stream_filter_register("strtoupper", "strtoupper_filter"); +$fp=fopen($file, "w"); +stream_filter_append($fp, "strtoupper"); +fread($fp, 1024); +fwrite($fp, "Thank you\n"); +fclose($fp); +readfile($file); +unlink($file); +?> +--EXPECT-- +fffffffffff +hello +THANK YOU diff --git a/ext/standard/tests/filters/bug46164-1.phpt b/ext/standard/tests/filters/bug46164-1.phpt new file mode 100644 index 0000000..b2d2d4e --- /dev/null +++ b/ext/standard/tests/filters/bug46164-1.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #46164 - 1 (stream_filter_remove() closes the stream) +--FILE-- +<?php +class user_filter extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + while($bucket = stream_bucket_make_writeable($in)) { + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + } + return PSFS_PASS_ON; + } +} +stream_filter_register('user_filter','user_filter'); + +$fd = fopen('php://memory','w'); +$filter = stream_filter_append($fd, 'user_filter'); +stream_filter_remove($filter); +var_dump(fclose($fd)); +?> +--EXPECT-- +bool(true) diff --git a/ext/standard/tests/filters/bug46164-2.phpt b/ext/standard/tests/filters/bug46164-2.phpt new file mode 100644 index 0000000..6a1bde5 --- /dev/null +++ b/ext/standard/tests/filters/bug46164-2.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #46164 - 2 (stream_filter_remove() closes the stream) +--FILE-- +<?php +class user_filter extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + while($bucket = stream_bucket_make_writeable($in)) { + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + } + unset($this->stream); + return PSFS_PASS_ON; + } +} +stream_filter_register('user_filter','user_filter'); + +$fd = fopen('php://memory','w'); +$filter = stream_filter_append($fd, 'user_filter'); +fwrite($fd, "foo"); +fflush($fd); +var_dump(fclose($fd)); +?> +--EXPECT-- +bool(true) diff --git a/ext/standard/tests/filters/bug50363.phpt b/ext/standard/tests/filters/bug50363.phpt new file mode 100644 index 0000000..3395ede --- /dev/null +++ b/ext/standard/tests/filters/bug50363.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #50363 (Invalid parsing in convert.quoted-printable-decode filter) +--FILE-- +<?php + +$foo = "Sauvegarder=C3=A9ussi(e) n=C3=A3o N=C3=83O\n"; +$foo .= "Sauvegarder=c3=a9ussi(e) n=c3=a3o N=c3=83O\n"; // Does not work! +$b = fopen('php://temp', 'w+'); +stream_filter_append($b, 'convert.quoted-printable-decode', STREAM_FILTER_WRITE); +fwrite($b, $foo); +rewind($b); +fpassthru($b); + +?> +--EXPECTF-- +Sauvegarderéussi(e) não NÃO +Sauvegarderéussi(e) não NÃO diff --git a/ext/standard/tests/filters/chunked_001.phpt b/ext/standard/tests/filters/chunked_001.phpt new file mode 100644 index 0000000..0e0f645 --- /dev/null +++ b/ext/standard/tests/filters/chunked_001.phpt @@ -0,0 +1,35 @@ +--TEST-- +Chunked encoding +--SKIPIF-- +<?php +$filters = stream_get_filters(); +if(! in_array( "dechunk", $filters )) die( "chunked filter not available." ); +?> +--INI-- +allow_url_fopen=1 +--FILE-- +<?php +$streams = array( + "data://text/plain,0\r\n", + "data://text/plain,2\r\nte\r\n2\r\nst\r\n0\r\n", + "data://text/plain,2\nte\n2\nst\n0\n", + "data://text/plain,2;a=1\nte\n2;a=2;b=3\r\nst\n0\n", + "data://text/plain,2\nte\n2\nst\n0\na=b\r\nc=d\n\r\n", + "data://text/plain,1f\n0123456789abcdef0123456789abcde\n1\nf\n0\n", + "data://text/plain,1E\n0123456789abcdef0123456789abcd\n2\nef\n0\n", +); +foreach ($streams as $name) { + $fp = fopen($name, "r"); + stream_filter_append($fp, "dechunk", STREAM_FILTER_READ); + var_dump(stream_get_contents($fp)); + fclose($fp); +} +?> +--EXPECT-- +string(0) "" +string(4) "test" +string(4) "test" +string(4) "test" +string(4) "test" +string(32) "0123456789abcdef0123456789abcdef" +string(32) "0123456789abcdef0123456789abcdef" diff --git a/ext/standard/tests/filters/filter_errors.inc b/ext/standard/tests/filters/filter_errors.inc new file mode 100644 index 0000000..7345df3 --- /dev/null +++ b/ext/standard/tests/filters/filter_errors.inc @@ -0,0 +1,37 @@ +<?php + +function filter_errors_skipif($needle) { + if (!function_exists('fnmatch')) { + die('skip fnmatch() not available'); + } + $filters = stream_get_filters(); + foreach($filters as $filter) { + if (fnmatch($filter, $needle)) return; + } + die("skip $needle not available"); +} + +function filter_errors_test($filter, $data) { + + echo "test filtering of buffered data\n"; + + $stream = fopen('php://memory', 'wb+'); + + fwrite($stream, b".\r\n$data"); + fseek($stream, 0, SEEK_SET); + stream_get_line($stream, 8192, "\r\n"); + + $f = stream_filter_append($stream, $filter); + + echo "test filtering of non buffered data\n"; + + $stream = fopen('php://memory', 'wb+'); + + fwrite($stream, b"$data"); + fseek($stream, 0, SEEK_SET); + + stream_filter_append($stream, $filter); + stream_get_contents($stream); + +} + diff --git a/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt b/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt new file mode 100644 index 0000000..4c043be --- /dev/null +++ b/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt @@ -0,0 +1,18 @@ +--TEST-- +Filter errors: convert.base64-decode +--SKIPIF-- +<?php require 'filter_errors.inc'; filter_errors_skipif('convert.base64-decode'); ?> +--FILE-- +<?php +require 'filter_errors.inc'; +filter_errors_test('convert.base64-decode', '==='); +?> +--EXPECTF-- +test filtering of buffered data + +Warning: stream_filter_append(): stream filter (convert.base64-decode): invalid byte sequence in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): stream filter (convert.base64-decode): invalid byte sequence in %s diff --git a/ext/standard/tests/filters/filter_errors_user.phpt b/ext/standard/tests/filters/filter_errors_user.phpt new file mode 100644 index 0000000..7bdf8de --- /dev/null +++ b/ext/standard/tests/filters/filter_errors_user.phpt @@ -0,0 +1,179 @@ +--TEST-- +Filter errors: user filter +--FILE-- +<?php +require 'filter_errors.inc'; + +class test_filter0 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + return PSFS_ERR_FATAL; + } +} +class test_filter1 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + $bucket = stream_bucket_make_writeable($in); + return PSFS_ERR_FATAL; + } +} +class test_filter2 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + while ($bucket = stream_bucket_make_writeable($in)) { + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + } + return PSFS_ERR_FATAL; + } +} +class test_filter3 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + if (!$closing) { + $bucket = stream_bucket_new($this->stream, "42"); + stream_bucket_append($out, $bucket); + } + return PSFS_ERR_FATAL; + } +} +class test_filter4 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + if (!$closing) { + $bucket = stream_bucket_new($this->stream, "42"); + } + return PSFS_ERR_FATAL; + } +} + +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + var_dump(stream_filter_register("test_filter$i", "test_filter$i")); + filter_errors_test("test_filter$i", "42"); +} + +echo "test append / read / remove\n"; +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $stream = fopen('php://memory', 'wb+'); + fwrite($stream, b"42"); + fseek($stream, 0, SEEK_SET); + $f = stream_filter_append($stream, "test_filter$i"); + stream_get_contents($stream); + stream_filter_remove($f); +} + +echo "test append all / read / remove all\n"; +$stream = fopen('php://memory', 'wb+'); +fwrite($stream, b"42"); +fseek($stream, 0, SEEK_SET); +$filters = array(); +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $filters[] = stream_filter_append($stream, "test_filter$i"); +} +stream_get_contents($stream); +foreach($filters as $filter) { + stream_filter_remove($filter); +} + +echo "test append all / read / close\n"; +$stream = fopen('php://memory', 'wb+'); +fwrite($stream, b"42"); +fseek($stream, 0, SEEK_SET); +$filters = array(); +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $filters[] = stream_filter_append($stream, "test_filter$i"); +} +stream_get_contents($stream); +fclose($stream); + +?> +--EXPECTF-- +test_filter0 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test_filter1 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data +test_filter2 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data +test_filter3 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test_filter4 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test append / read / remove +test_filter0 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter1 + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter2 + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter3 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test append all / read / remove all +test_filter0 +test_filter1 +test_filter2 +test_filter3 +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test append all / read / close +test_filter0 +test_filter1 +test_filter2 +test_filter3 +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s diff --git a/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt b/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt new file mode 100644 index 0000000..ebb3b21 --- /dev/null +++ b/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt @@ -0,0 +1,14 @@ +--TEST-- +Filter errors: zlib.inflate +--SKIPIF-- +<?php require 'filter_errors.inc'; filter_errors_skipif('zlib.inflate'); ?> +--FILE-- +<?php +require 'filter_errors.inc'; +filter_errors_test('zlib.inflate', gzencode(b'42')); +?> +--EXPECTF-- +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data diff --git a/ext/standard/tests/filters/php_user_filter_01.phpt b/ext/standard/tests/filters/php_user_filter_01.phpt new file mode 100644 index 0000000..e4a9c68 --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_01.phpt @@ -0,0 +1,17 @@ +--TEST-- +class php_user_filter#1 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, &$consumed, $closing) {} + function onCreate() {} + function onClose() {} +} +class bar extends php_user_filter { + function filter($in, $out, &$consumed) {} + function onCreate() {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of bar::filter() should be compatible with php_user_filter::filter($in, $out, &$consumed, $closing) in %s on line %d diff --git a/ext/standard/tests/filters/php_user_filter_02.phpt b/ext/standard/tests/filters/php_user_filter_02.phpt new file mode 100644 index 0000000..2a1dbfd --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_02.phpt @@ -0,0 +1,12 @@ +--TEST-- +class php_user_filter#2 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, $consumed, $closing) {} + function onCreate() {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of foo::filter() should be compatible with php_user_filter::filter($in, $out, &$consumed, $closing) in %s on line %d diff --git a/ext/standard/tests/filters/php_user_filter_03.phpt b/ext/standard/tests/filters/php_user_filter_03.phpt new file mode 100644 index 0000000..e9e0266 --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_03.phpt @@ -0,0 +1,12 @@ +--TEST-- +class php_user_filter#3 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, &$consumed, $closing) {} + function onCreate($var) {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of foo::onCreate() should be compatible with php_user_filter::onCreate() in %s on line %d diff --git a/ext/standard/tests/filters/read.phpt b/ext/standard/tests/filters/read.phpt new file mode 100644 index 0000000..a2372cf --- /dev/null +++ b/ext/standard/tests/filters/read.phpt @@ -0,0 +1,72 @@ +--TEST-- +stream filter - reading +--FILE-- +<?php +echo "-TEST\n"; +class filter extends php_user_filter { + function filter($in, $out, &$consumed, $closing) + { + $output = 0; + while ($bucket = stream_bucket_make_writeable($in)) { + $bucket->data = strtoupper($bucket->data); + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + $output = 1; + } + if ($closing) { + $bucket = stream_bucket_new($this->stream, "\n===close===\n"); + stream_bucket_append($out, $bucket); + $output = 1; + } + return $output ? PSFS_PASS_ON : PSFS_FEED_ME; + } +} +stream_filter_register("strtoupper", "filter") + or die("Failed to register filter"); + +if ($f = fopen(__FILE__, "rb")) { + stream_filter_append($f, "strtoupper"); + while (!feof($f)) { + echo fread($f, 8192); + } + fclose($f); +} +echo "Done\n"; +?> +--EXPECTF-- +%sTEST +<?PHP +ECHO "-TEST\N"; +CLASS FILTER EXTENDS PHP_USER_FILTER { + FUNCTION FILTER($IN, $OUT, &$CONSUMED, $CLOSING) + { + $OUTPUT = 0; + WHILE ($BUCKET = STREAM_BUCKET_MAKE_WRITEABLE($IN)) { + $BUCKET->DATA = STRTOUPPER($BUCKET->DATA); + $CONSUMED += $BUCKET->DATALEN; + STREAM_BUCKET_APPEND($OUT, $BUCKET); + $OUTPUT = 1; + } + IF ($CLOSING) { + $BUCKET = STREAM_BUCKET_NEW($THIS->STREAM, "\N===CLOSE===\N"); + STREAM_BUCKET_APPEND($OUT, $BUCKET); + $OUTPUT = 1; + } + RETURN $OUTPUT ? PSFS_PASS_ON : PSFS_FEED_ME; + } +} +STREAM_FILTER_REGISTER("STRTOUPPER", "FILTER") + OR DIE("FAILED TO REGISTER FILTER"); + +IF ($F = FOPEN(__FILE__, "RB")) { + STREAM_FILTER_APPEND($F, "STRTOUPPER"); + WHILE (!FEOF($F)) { + ECHO FREAD($F, 8192); + } + FCLOSE($F); +} +ECHO "DONE\N"; +?> + +===close=== +Done diff --git a/ext/standard/tests/filters/stream_filter_remove_basic.phpt b/ext/standard/tests/filters/stream_filter_remove_basic.phpt new file mode 100644 index 0000000..6ca84fe --- /dev/null +++ b/ext/standard/tests/filters/stream_filter_remove_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test stream_filter_remove() function : basic functionality +--SKIPIF-- +<?php +$filters = stream_get_filters(); +if(! in_array( "string.rot13", $filters )) die( "skip rot13 filter not available." ); +?> +--FILE-- +<?php +/* Prototype : bool stream_filter_remove(resource stream_filter) + * Description: Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource + * Source code: ext/standard/streamsfuncs.c + * Alias to functions: + */ + +echo "*** Testing stream_filter_remove() : basic functionality ***\n"; + +$file = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'streamfilterTest.txt'; +touch( $file ); + +$fp = fopen( $file, 'w+' ); + +$filter = stream_filter_append( $fp, "string.rot13", STREAM_FILTER_WRITE ); +fwrite( $fp, "Testing the rot13 filter which shifts some things around." ); + +var_dump( stream_filter_remove( $filter ) ); +fwrite( $fp, "\nadd some more un-filtered foobar\n" ); + +rewind( $fp ); +fpassthru( $fp ); +fclose( $fp ); + +?> +===DONE=== +--CLEAN-- +<?php + +$file = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'streamfilterTest.txt'; +unlink( $file ); + +?> +--EXPECTF-- +*** Testing stream_filter_remove() : basic functionality *** +bool(true) +Grfgvat gur ebg13 svygre juvpu fuvsgf fbzr guvatf nebhaq. +add some more un-filtered foobar +===DONE=== diff --git a/ext/standard/tests/filters/stream_filter_remove_error.phpt b/ext/standard/tests/filters/stream_filter_remove_error.phpt new file mode 100644 index 0000000..9cbb925 --- /dev/null +++ b/ext/standard/tests/filters/stream_filter_remove_error.phpt @@ -0,0 +1,80 @@ +--TEST-- +Test stream_filter_remove() function : error conditions +--SKIPIF-- +<?php +$filters = stream_get_filters(); +if(! in_array( "string.rot13", $filters )) die( "skip rot13 filter not available." ); +?> +--FILE-- +<?php +/* Prototype : bool stream_filter_remove(resource stream_filter) + * Description: Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource + * Source code: ext/standard/streamsfuncs.c + * Alias to functions: + */ + +$file = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'streamfilterTest.txt'; +touch( $file ); +$fp = fopen( $file, 'w+' ); +$filter = stream_filter_append( $fp, "string.rot13", STREAM_FILTER_WRITE ); + +echo "*** Testing stream_filter_remove() : error conditions ***\n"; + +echo "\n-- Testing stream_filter_remove() function with Zero arguments --\n"; +var_dump( stream_filter_remove() ); + +echo "\n-- Testing stream_filter_remove() function with more than expected no. of arguments --\n"; +$arg = 'bogus arg'; +var_dump( stream_filter_remove( $filter, $arg ) ); + +echo "\n-- Testing stream_filter_remove() function with unexisting stream filter --\n"; +var_dump( stream_filter_remove( "fakefilter" ) ); + +echo "\n-- Testing stream_filter_remove() function with bad resource --\n"; +var_dump( stream_filter_remove( $fp ) ); + +echo "\n-- Testing stream_filter_remove() function with an already removed filter --\n"; +// Double remove it +var_dump( stream_filter_remove( $filter ) ); +var_dump( stream_filter_remove( $filter ) ); + +fclose( $fp ); + +?> +===DONE=== +--CLEAN-- +<?php + +$file = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'streamfilterTest.txt'; +unlink( $file ); + +?> +--EXPECTF-- +*** Testing stream_filter_remove() : error conditions *** + +-- Testing stream_filter_remove() function with Zero arguments -- + +Warning: stream_filter_remove() expects exactly 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing stream_filter_remove() function with more than expected no. of arguments -- + +Warning: stream_filter_remove() expects exactly 1 parameter, 2 given in %s on line %d +bool(false) + +-- Testing stream_filter_remove() function with unexisting stream filter -- + +Warning: stream_filter_remove() expects parameter 1 to be resource, string given in %s on line %d +bool(false) + +-- Testing stream_filter_remove() function with bad resource -- + +Warning: stream_filter_remove(): Invalid resource given, not a stream filter in %s on line %d +bool(false) + +-- Testing stream_filter_remove() function with an already removed filter -- +bool(true) + +Warning: stream_filter_remove(): Invalid resource given, not a stream filter in %s on line %d +bool(false) +===DONE=== |