]> granicus.if.org Git - php/commitdiff
- New tests
authorFelipe Pena <felipe@php.net>
Sun, 20 Dec 2009 22:04:55 +0000 (22:04 +0000)
committerFelipe Pena <felipe@php.net>
Sun, 20 Dec 2009 22:04:55 +0000 (22:04 +0000)
Zend/tests/call_user_func_004.phpt [new file with mode: 0644]
Zend/tests/call_user_func_005.phpt [new file with mode: 0644]
Zend/tests/closure_035.phpt [new file with mode: 0644]

diff --git a/Zend/tests/call_user_func_004.phpt b/Zend/tests/call_user_func_004.phpt
new file mode 100644 (file)
index 0000000..4885c4d
--- /dev/null
@@ -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 (file)
index 0000000..6c1fa19
--- /dev/null
@@ -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 (file)
index 0000000..ac8b4ca
--- /dev/null
@@ -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)