]> granicus.if.org Git - php/commitdiff
- New tests
authorFelipe Pena <felipe@php.net>
Sun, 19 Jul 2009 16:31:43 +0000 (16:31 +0000)
committerFelipe Pena <felipe@php.net>
Sun, 19 Jul 2009 16:31:43 +0000 (16:31 +0000)
Zend/tests/call_user_func_001.phpt [new file with mode: 0644]
Zend/tests/call_user_func_002.phpt [new file with mode: 0644]
Zend/tests/call_user_func_003.phpt [new file with mode: 0644]

diff --git a/Zend/tests/call_user_func_001.phpt b/Zend/tests/call_user_func_001.phpt
new file mode 100644 (file)
index 0000000..e9b35f9
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+Testing call_user_func inside namespace
+--FILE--
+<?php
+
+namespace testing {
+       function foobar($str) {
+               var_dump($str);
+       }
+       
+       abstract class bar {
+               protected function prot($str) {
+                       print "Shouldn't be called!\n";
+               }
+       }
+       class foo extends bar {
+               private function priv($str) {
+                       print "Shouldn't be called!\n";
+               }
+       }
+       
+       call_user_func(__NAMESPACE__ .'\foobar', 'foobar');
+       
+       $class =  __NAMESPACE__ .'\foo';
+       call_user_func(array(new $class, 'priv'), 'foobar');
+       call_user_func(array(new $class, 'prot'), 'foobar');
+}
+
+?>
+--EXPECTF--
+%string|unicode%(6) "foobar"
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, cannot access private method testing\foo::priv() in %s on line %d
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, cannot access protected method testing\foo::prot() in %s on line %d
diff --git a/Zend/tests/call_user_func_002.phpt b/Zend/tests/call_user_func_002.phpt
new file mode 100644 (file)
index 0000000..e79dd1a
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+Testing call_user_func() with autoload and passing invalid params
+--FILE--
+<?php
+
+function __autoload($class) {
+       var_dump($class);
+}
+
+call_user_func(array('foo', 'bar'));
+call_user_func(array('', 'bar'));
+call_user_func(array($foo, 'bar'));
+call_user_func(array($foo, ''));
+
+?>
+--EXPECTF--
+%unicode|string%(3) "foo"
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, class 'foo' not found in %s on line %d
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, class '' not found in %s on line %d
+
+Notice: Undefined variable: foo in %s on line %d
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in %s on line %d
+
+Notice: Undefined variable: foo in %s on line %d
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in %s on line %d
diff --git a/Zend/tests/call_user_func_003.phpt b/Zend/tests/call_user_func_003.phpt
new file mode 100644 (file)
index 0000000..d516584
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+Testing call_user_func() with closures
+--FILE--
+<?php
+
+$foo = function() {
+       static $instance;
+       
+       if (is_null($instance)) {
+               $instance = function () {
+                       return 'OK!';
+               };
+       }
+               
+       return $instance;       
+};
+
+var_dump(call_user_func(array($foo, '__invoke'))->__invoke());
+var_dump(call_user_func(function() use (&$foo) { return $foo; }, '__invoke'));
+
+?>
+--EXPECTF--
+%unicode|string%(3) "OK!"
+object(Closure)#%d (1) {
+  [%u|b%"static"]=>
+  array(1) {
+    [%u|b%"instance"]=>
+    object(Closure)#%d (0) {
+    }
+  }
+}