我需要测试具有大量可能输入的特定函数的行为。假设功能签名如下:
foo ($a)
foo ($a, $b, $c)
说$a
可以包含以下值:1,2。
说$b
可以包含以下值:'hello'
,'world'
。
说$c
可以包含以下值:TRUE
,FALSE
如何编写返回以下组合的函数:
1
2
1,hello,TRUE
1,hello,FALSE
2,hello,TRUE
2,hello,FALSE
1,world,TRUE
1,world,FALSE
...
请注意,函数参数的数量是未知的,它们的可能值也是未知的。
答案 0 :(得分:0)
这个问题似乎与递归没有任何关系。
根据您所编写的内容,您似乎希望使用可能的每个排列生成的参数列表来测试函数foo()
?
以下代码将生成该列表。
//Generate the list
$arg_list = array();
foreach(array(1,2) as $a) //Build the foo($a) cases
$arg_list[] = array($a);
foreach(array(1,2) as $a) //Build the foo($a, $b, $c) cases
foreach(array('hello','world') as $b)
foreach(array(true,false) as $c)
$arg_list[] = array($a,$b,$c);
//Test each possible case
foreach($arg_list as $args) {
...
$result = call_user_func_array('foo', $args);
...
//Is result what was expected? Check and aggregate
}
这是你想要的事吗?