summaryrefslogtreecommitdiff
path: root/tests/func
diff options
context:
space:
mode:
authorNuno Lopes <nlopess@php.net>2008-02-08 13:49:27 +0000
committerNuno Lopes <nlopess@php.net>2008-02-08 13:49:27 +0000
commit38149b6207a1459f9e85330e71417cdb787d89b2 (patch)
tree7fb1452709811a6023a4b868ea90095782a82b7b /tests/func
parent3ea9c13c4be01cb055e65fbeda034ade5e3c7ed8 (diff)
downloadphp-git-38149b6207a1459f9e85330e71417cdb787d89b2.tar.gz
add new test to test function with many arguments (i.e. test the new stack implementation)
this increases the converage of zend_execute.h by 18%
Diffstat (limited to 'tests/func')
-rw-r--r--tests/func/010.phpt73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/func/010.phpt b/tests/func/010.phpt
new file mode 100644
index 0000000000..6778ed2f11
--- /dev/null
+++ b/tests/func/010.phpt
@@ -0,0 +1,73 @@
+--TEST--
+function with many parameters
+--FILE--
+<?php
+
+// the stack size + some random constant
+$boundary = 64*1024;
+$limit = $boundary+42;
+
+
+function test($a,$b)
+{
+ var_dump($a === $b);
+ test2($a,$b);
+}
+
+function test2($a, $b)
+{
+ if ($a !== $b) {
+ var_dump("something went wrong: $a !== $b");
+ }
+}
+
+
+// generate the function
+$str = "<?php\nfunction x(";
+
+for($i=0; $i < $limit; ++$i) {
+ $str .= '$v'.dechex($i).($i===($limit-1) ? '' : ',');
+}
+
+$str .= ') {
+ test($v42, \'42\');
+ test(\'4000\', $v4000);
+ test2($v300, \'300\');
+ test($v0, \'0\'); // first
+ test($v'.dechex($limit-1).", '".dechex($limit-1).'\'); // last
+ test($v'.dechex($boundary).", '".dechex($boundary).'\'); //boundary
+ test($v'.dechex($boundary+1).", '".dechex($boundary+1).'\'); //boundary+1
+ test($v'.dechex($boundary-1).", '".dechex($boundary-1).'\'); //boundary-1
+}';
+
+// generate the function call
+$str .= "\n\nx(";
+
+for($i=0; $i< $limit; ++$i) {
+ $str .= "'".dechex($i)."'".($i===($limit-1) ? '' : ',');
+}
+
+$str .= ");\n";
+
+$filename = dirname(__FILE__).'/010-file.php';
+file_put_contents(dirname(__FILE__).'/010-file.php', $str);
+unset($str);
+
+include($filename);
+
+echo "Done\n";
+
+?>
+--CLEAN--
+<?php
+@unlink(dirname(__FILE__).'/010-file.php');
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Done