summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2009-12-20 22:04:55 +0000
committerFelipe Pena <felipe@php.net>2009-12-20 22:04:55 +0000
commite83e52eba15e2180ebb66d006f5c2018259b6891 (patch)
treef3c0702f93bd9b2628275a81a6ac5a12c1f3edba
parentae70213177f8363a85418e4e9bf4ea73624e406d (diff)
downloadphp-git-e83e52eba15e2180ebb66d006f5c2018259b6891.tar.gz
- New tests
-rw-r--r--Zend/tests/call_user_func_004.phpt18
-rw-r--r--Zend/tests/call_user_func_005.phpt35
-rw-r--r--Zend/tests/closure_035.phpt31
3 files changed, 84 insertions, 0 deletions
diff --git a/Zend/tests/call_user_func_004.phpt b/Zend/tests/call_user_func_004.phpt
new file mode 100644
index 0000000000..4885c4d3fa
--- /dev/null
+++ b/Zend/tests/call_user_func_004.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Calling non-static method with call_user_func()
+--FILE--
+<?php
+
+class foo {
+ public function teste() {
+ $this->a = 1;
+ }
+}
+
+call_user_func(array('foo', 'teste'));
+
+?>
+--EXPECTF--
+Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method foo::teste() should not be called statically in %s on line %d
+
+Fatal error: Using $this when not in object context in %s on line %d
diff --git a/Zend/tests/call_user_func_005.phpt b/Zend/tests/call_user_func_005.phpt
new file mode 100644
index 0000000000..6c1fa19733
--- /dev/null
+++ b/Zend/tests/call_user_func_005.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Passing Closure as parameter to an non-existent function
+--FILE--
+<?php
+
+class foo {
+ public static function __callstatic($x, $y) {
+ var_dump($x,$y);
+ return 1;
+ }
+
+ public function teste() {
+ return foo::x(function &($a=1,$b) { });
+ }
+}
+
+var_dump(call_user_func(array('foo', 'teste')));
+
+?>
+--EXPECTF--
+Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method foo::teste() should not be called statically in %s on line %d
+%string|unicode%(1) "x"
+array(1) {
+ [0]=>
+ object(Closure)#%d (1) {
+ ["parameter"]=>
+ array(2) {
+ ["$a"]=>
+ string(10) "<required>"
+ ["$b"]=>
+ string(10) "<required>"
+ }
+ }
+}
+int(1)
diff --git a/Zend/tests/closure_035.phpt b/Zend/tests/closure_035.phpt
new file mode 100644
index 0000000000..ac8b4caea0
--- /dev/null
+++ b/Zend/tests/closure_035.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Testing recursion detection with Closures
+--FILE--
+<?php
+
+$x = function () use (&$x) {
+ $h = function () use ($x) {
+ var_dump($x);
+ return 1;
+ };
+ return $h();
+};
+
+var_dump($x());
+
+?>
+--EXPECTF--
+object(Closure)#%d (1) {
+ ["static"]=>
+ array(1) {
+ [%u|b%"x"]=>
+ &object(Closure)#%d (1) {
+ ["static"]=>
+ array(1) {
+ [%u|b%"x"]=>
+ *RECURSION*
+ }
+ }
+ }
+}
+int(1)