diff options
Diffstat (limited to 'tests/output/ob_start_basic_006.phpt')
-rw-r--r-- | tests/output/ob_start_basic_006.phpt | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/tests/output/ob_start_basic_006.phpt b/tests/output/ob_start_basic_006.phpt new file mode 100644 index 0000000..464e71b --- /dev/null +++ b/tests/output/ob_start_basic_006.phpt @@ -0,0 +1,135 @@ +--TEST-- +ob_start(): ensure multiple buffer initialization with a single call using arrays is not supported on PHP6 (http://bugs.php.net/42641) +--FILE-- +<?php +/* + * proto bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]]) + * Function is implemented in main/output.c +*/ + +function f($string) { + static $i=0; + $i++; + $len = strlen($string); + return "f[call:$i; len:$len] - $string\n"; +} + +Class C { + public $id = 'none'; + + function __construct($id) { + $this->id = $id; + } + + static function g($string) { + static $i=0; + $i++; + $len = strlen($string); + return "C::g[call:$i; len:$len] - $string\n"; + } + + function h($string) { + static $i=0; + $i++; + $len = strlen($string); + return "C::h[call:$i; len:$len; id:$this->id] - $string\n"; + } +} + +function checkAndClean() { + print_r(ob_list_handlers()); + while (ob_get_level()>0) { + ob_end_flush(); + } +} + +echo "\n ---> Test arrays: \n"; +var_dump(ob_start(array("f"))); +checkAndClean(); + +var_dump(ob_start(array("f", "f"))); +checkAndClean(); + +var_dump(ob_start(array("f", "C::g", "f", "C::g"))); +checkAndClean(); + +var_dump(ob_start(array("f", "non_existent", "f"))); +checkAndClean(); + +var_dump(ob_start(array("f", "non_existent", "f", "f"))); +checkAndClean(); + +$c = new c('originalID'); +var_dump(ob_start(array($c, "h"))); +checkAndClean(); + +var_dump(ob_start(array($c, "h"))); +$c->id = 'changedID'; +checkAndClean(); + +$c->id = 'changedIDagain'; +var_dump(ob_start(array('f', 'C::g', array(array($c, "g"), array($c, "h"))))); +checkAndClean(); +?> +--EXPECTF-- + ---> Test arrays: + +Warning: ob_start(): array must have exactly two members in %s on line 44 + +Notice: ob_start(): failed to create buffer in %s on line 44 +bool(false) +Array +( +) + +Warning: ob_start(): class 'f' not found in %s on line 47 + +Notice: ob_start(): failed to create buffer in %s on line 47 +bool(false) +Array +( +) + +Warning: ob_start(): array must have exactly two members in %s on line 50 + +Notice: ob_start(): failed to create buffer in %s on line 50 +bool(false) +Array +( +) + +Warning: ob_start(): array must have exactly two members in %s on line 53 + +Notice: ob_start(): failed to create buffer in %s on line 53 +bool(false) +Array +( +) + +Warning: ob_start(): array must have exactly two members in %s on line 56 + +Notice: ob_start(): failed to create buffer in %s on line 56 +bool(false) +Array +( +) +C::h[call:1; len:37; id:originalID] - bool(true) +Array +( + [0] => C::h +) + +C::h[call:2; len:37; id:changedID] - bool(true) +Array +( + [0] => C::h +) + + +Warning: ob_start(): array must have exactly two members in %s on line 68 + +Notice: ob_start(): failed to create buffer in %s on line 68 +bool(false) +Array +( +) |