]> granicus.if.org Git - php/commitdiff
Split is_callable test. Test on Windows, Linux and Linux 64 bit
authorandy wharmby <wharmby@php.net>
Sun, 25 Jan 2009 22:16:37 +0000 (22:16 +0000)
committerandy wharmby <wharmby@php.net>
Sun, 25 Jan 2009 22:16:37 +0000 (22:16 +0000)
ext/standard/tests/general_functions/is_callable_basic1.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/is_callable_basic2.phpt [moved from ext/standard/tests/general_functions/is_callable.phpt with 73% similarity]
ext/standard/tests/general_functions/is_callable_error.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/is_callable_variation1.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/is_callable_variation2.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/general_functions/is_callable_basic1.phpt b/ext/standard/tests/general_functions/is_callable_basic1.phpt
new file mode 100644 (file)
index 0000000..e836d73
--- /dev/null
@@ -0,0 +1,109 @@
+--TEST--
+Test is_callable() function : usage variations - defined functions
+--INI--
+precision=14
+error_reporting = E_ALL & ~E_NOTICE | E_STRICT
+--FILE--
+<?php
+/* Prototype: bool is_callable ( mixed $var [, bool $syntax_only [, string &$callable_name]] );
+ * Description: Verify that the contents of a variable can be called as a function
+ * Source code: ext/imap/php_imap.c
+ */
+
+/* Prototype: void check_iscallable( $functions );
+   Description: use iscallable() on given string to check for valid function name
+                returns true if valid function name, false otherwise
+*/
+function check_iscallable( $functions ) {
+  $counter = 1;
+  foreach($functions as $func) {
+    echo "-- Iteration  $counter --\n";
+    var_dump( is_callable($func) );  //given only $var argument
+    var_dump( is_callable($func, TRUE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, TRUE, $callable_name) );
+    echo $callable_name, "\n";
+    var_dump( is_callable($func, FALSE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, FALSE, $callable_name) );
+    echo $callable_name, "\n";
+    $counter++;
+  }
+}
+
+echo "\n*** Testing is_callable() on defined functions ***\n";
+/* function name with simple string */
+function someFunction() {
+}
+
+/* function name with mixed string and integer */
+function x123() {
+}
+
+/* function name as NULL */
+function NULL() {
+}
+
+/* function name with boolean name */
+function false() {
+}
+
+/* function name with string and special character */
+function Hello_World() {
+}
+
+$defined_functions = array (
+  $functionVar1 = 'someFunction',
+  $functionVar2 = 'x123',
+  $functionVar3 = 'NULL',
+  $functionVar4 = 'false',
+  $functionVar5 = "Hello_World"
+);
+/* use check_iscallable() to check whether given string is valid function name
+ *  expected: true as it is valid callback
+ */
+check_iscallable($defined_functions);
+
+?>
+===DONE===
+--EXPECT---
+*** Testing is_callable() on defined functions ***
+-- Iteration  1 --
+bool(true)
+bool(true)
+bool(true)
+someFunction
+bool(true)
+bool(true)
+someFunction
+-- Iteration  2 --
+bool(true)
+bool(true)
+bool(true)
+x123
+bool(true)
+bool(true)
+x123
+-- Iteration  3 --
+bool(true)
+bool(true)
+bool(true)
+NULL
+bool(true)
+bool(true)
+NULL
+-- Iteration  4 --
+bool(true)
+bool(true)
+bool(true)
+false
+bool(true)
+bool(true)
+false
+-- Iteration  5 --
+bool(true)
+bool(true)
+bool(true)
+Hello_World
+bool(true)
+bool(true)
+Hello_World
+===DONE===
\ No newline at end of file
similarity index 73%
rename from ext/standard/tests/general_functions/is_callable.phpt
rename to ext/standard/tests/general_functions/is_callable_basic2.phpt
index 1ea93bcf4cf9f65b04fb4900981d7e5627c60c59..58443be1fbbd53461faffefc49e948ca9d65e32b 100644 (file)
Binary files a/ext/standard/tests/general_functions/is_callable.phpt and b/ext/standard/tests/general_functions/is_callable_basic2.phpt differ
diff --git a/ext/standard/tests/general_functions/is_callable_error.phpt b/ext/standard/tests/general_functions/is_callable_error.phpt
new file mode 100644 (file)
index 0000000..ac23b8a
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+Test is_callable() function
+--INI--
+precision=14
+error_reporting = E_ALL & ~E_NOTICE | E_STRICT
+--FILE--
+<?php
+/* Prototype: bool is_callable ( mixed $var [, bool $syntax_only [, string &$callable_name]] );
+   Description: Verify that the contents of a variable can be called as a function
+                In case of objects, $var = array($SomeObject, 'MethodName')
+*/
+
+echo "\n*** Testing error conditions ***\n";
+
+echo "\n-- Testing is_callable() function with less than expected no. of arguments --\n";
+var_dump( is_callable() );
+
+echo "\n-- Testing is_callable() function with more than expected no. of arguments --\n";
+var_dump( is_callable("string", TRUE, $callable_name, "EXTRA") );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing error conditions ***
+
+-- Testing is_callable() function with less than expected no. of arguments --
+
+Warning: is_callable() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+
+-- Testing is_callable() function with more than expected no. of arguments --
+
+Warning: is_callable() expects at most 3 parameters, 4 given in %s on line %d
+NULL
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/general_functions/is_callable_variation1.phpt b/ext/standard/tests/general_functions/is_callable_variation1.phpt
new file mode 100644 (file)
index 0000000..9fa6e53
--- /dev/null
@@ -0,0 +1,208 @@
+--TEST--
+Test is_callable() function : usage variations - undefined functions
+--INI--
+precision=14
+error_reporting = E_ALL & ~E_NOTICE | E_STRICT
+--FILE--
+<?php
+/* Prototype: bool is_callable ( mixed $var [, bool $syntax_only [, string &$callable_name]] );
+   Description: Verify that the contents of a variable can be called as a function
+                In case of objects, $var = array($SomeObject, 'MethodName')
+*/
+
+/* Prototype: void check_iscallable( $functions );
+   Description: use iscallable() on given string to check for valid function name
+                returns true if valid function name, false otherwise
+*/
+function check_iscallable( $functions ) {
+  $counter = 1;
+  foreach($functions as $func) {
+    echo "-- Iteration  $counter --\n";
+    var_dump( is_callable($func) );  //given only $var argument
+    var_dump( is_callable($func, TRUE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, TRUE, $callable_name) );
+    echo $callable_name, "\n";
+    var_dump( is_callable($func, FALSE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, FALSE, $callable_name) );
+    echo $callable_name, "\n";
+    $counter++;
+  }
+}
+
+echo "\n*** Testing is_callable() on undefined functions ***\n";
+$undef_functions = array (
+  "",  //empty string
+  '',
+  " ",  //string with a space
+  ' ',
+  "12356",
+  "\0",
+  '\0',
+  "hello world",
+  'hello world',
+  "welcome\0",
+  'welcome\0',
+  "==%%%***$$$@@@!!",
+  "false",
+  "\070",
+  '\t',  //escape character
+  '\007',
+  '123',
+  'echo()'
+);
+
+/* use check_iscallable() to check whether given string is valid function name
+ * expected: true with $syntax = TRUE
+ *           false with $syntax = FALSE
+ */
+check_iscallable($undef_functions);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing is_callable() on undefined functions ***
+-- Iteration  1 --
+bool(false)
+bool(true)
+bool(true)
+
+bool(false)
+bool(false)
+
+-- Iteration  2 --
+bool(false)
+bool(true)
+bool(true)
+
+bool(false)
+bool(false)
+
+-- Iteration  3 --
+bool(false)
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+-- Iteration  4 --
+bool(false)
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+-- Iteration  5 --
+bool(false)
+bool(true)
+bool(true)
+12356
+bool(false)
+bool(false)
+12356
+-- Iteration  6 --
+bool(false)
+bool(true)
+bool(true)
+%c
+bool(false)
+bool(false)
+%c
+-- Iteration  7 --
+bool(false)
+bool(true)
+bool(true)
+\0
+bool(false)
+bool(false)
+\0
+-- Iteration  8 --
+bool(false)
+bool(true)
+bool(true)
+hello world
+bool(false)
+bool(false)
+hello world
+-- Iteration  9 --
+bool(false)
+bool(true)
+bool(true)
+hello world
+bool(false)
+bool(false)
+hello world
+-- Iteration  10 --
+bool(false)
+bool(true)
+bool(true)
+welcome%c
+bool(false)
+bool(false)
+welcome%c
+-- Iteration  11 --
+bool(false)
+bool(true)
+bool(true)
+welcome\0
+bool(false)
+bool(false)
+welcome\0
+-- Iteration  12 --
+bool(false)
+bool(true)
+bool(true)
+==%%%***$$$@@@!!
+bool(false)
+bool(false)
+==%%%***$$$@@@!!
+-- Iteration  13 --
+bool(false)
+bool(true)
+bool(true)
+false
+bool(false)
+bool(false)
+false
+-- Iteration  14 --
+bool(false)
+bool(true)
+bool(true)
+8
+bool(false)
+bool(false)
+8
+-- Iteration  15 --
+bool(false)
+bool(true)
+bool(true)
+\t
+bool(false)
+bool(false)
+\t
+-- Iteration  16 --
+bool(false)
+bool(true)
+bool(true)
+\007
+bool(false)
+bool(false)
+\007
+-- Iteration  17 --
+bool(false)
+bool(true)
+bool(true)
+123
+bool(false)
+bool(false)
+123
+-- Iteration  18 --
+bool(false)
+bool(true)
+bool(true)
+echo()
+bool(false)
+bool(false)
+echo()
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/general_functions/is_callable_variation2.phpt b/ext/standard/tests/general_functions/is_callable_variation2.phpt
new file mode 100644 (file)
index 0000000..b94a446
--- /dev/null
@@ -0,0 +1,154 @@
+--TEST--
+Test is_callable() function : usage variations - on invalid function names  
+--INI--
+precision=14
+error_reporting = E_ALL & ~E_NOTICE | E_STRICT
+--FILE--
+<?php
+/* Prototype: bool is_callable ( mixed $var [, bool $syntax_only [, string &$callable_name]] );
+   Description: Verify that the contents of a variable can be called as a function
+                In case of objects, $var = array($SomeObject, 'MethodName')
+*/
+
+/* Prototype: void check_iscallable( $functions );
+   Description: use iscallable() on given string to check for valid function name
+                returns true if valid function name, false otherwise
+*/
+function check_iscallable( $functions ) {
+  $counter = 1;
+  foreach($functions as $func) {
+    echo "-- Iteration  $counter --\n";
+    var_dump( is_callable($func) );  //given only $var argument
+    var_dump( is_callable($func, TRUE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, TRUE, $callable_name) );
+    echo $callable_name, "\n";
+    var_dump( is_callable($func, FALSE) );  //given $var and $syntax argument
+    var_dump( is_callable($func, FALSE, $callable_name) );
+    echo $callable_name, "\n";
+    $counter++;
+  }
+}
+
+echo "\n*** Testing is_callable() on invalid function names ***\n";
+/* check on unset variables */
+$unset_var = 10;
+unset ($unset_var);
+
+/* opening file resource type */
+$file_handle = fopen (__FILE__, "r");
+
+$variants = array (
+  NULL,  // NULL as argument
+  0,  // zero as argument
+  1234567890,  // positive value
+  -100123456782,  // negative value
+  -2.000000,  // negative float value
+  .567,  // positive float value
+  FALSE,  // boolean value
+  array(1, 2, 3),  // array
+  @$unset_var,
+  @$undef_var,  //undefined variable
+  $file_handle
+);
+
+/* use check_iscallable() to check whether given variable is valid function name
+ *  expected: false
+ */
+check_iscallable($variants);
+
+/* closing resources used */
+fclose($file_handle);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing is_callable() on invalid function names ***
+-- Iteration  1 --
+bool(false)
+bool(false)
+bool(false)
+
+bool(false)
+bool(false)
+
+-- Iteration  2 --
+bool(false)
+bool(false)
+bool(false)
+0
+bool(false)
+bool(false)
+0
+-- Iteration  3 --
+bool(false)
+bool(false)
+bool(false)
+1234567890
+bool(false)
+bool(false)
+1234567890
+-- Iteration  4 --
+bool(false)
+bool(false)
+bool(false)
+-100123456782
+bool(false)
+bool(false)
+-100123456782
+-- Iteration  5 --
+bool(false)
+bool(false)
+bool(false)
+-2
+bool(false)
+bool(false)
+-2
+-- Iteration  6 --
+bool(false)
+bool(false)
+bool(false)
+0.567
+bool(false)
+bool(false)
+0.567
+-- Iteration  7 --
+bool(false)
+bool(false)
+bool(false)
+
+bool(false)
+bool(false)
+
+-- Iteration  8 --
+bool(false)
+bool(false)
+bool(false)
+Array
+bool(false)
+bool(false)
+Array
+-- Iteration  9 --
+bool(false)
+bool(false)
+bool(false)
+
+bool(false)
+bool(false)
+
+-- Iteration  10 --
+bool(false)
+bool(false)
+bool(false)
+
+bool(false)
+bool(false)
+
+-- Iteration  11 --
+bool(false)
+bool(false)
+bool(false)
+Resource id #%d
+bool(false)
+bool(false)
+Resource id #%d
+===DONE===
\ No newline at end of file