function DrupalTestCase::generatePermutations
Converts a list of possible parameters into a stack of permutations.
Takes a list of parameters containing possible values, and converts all of them into a list of items containing every possible permutation.
Example:
$parameters = array(
'one' => array(0, 1),
'two' => array(2, 3),
);
$permutations = DrupalTestCase::generatePermutations($parameters)
// Result:
$permutations == array(
array('one' => 0, 'two' => 2),
array('one' => 1, 'two' => 2),
array('one' => 0, 'two' => 3),
array('one' => 1, 'two' => 3),
)
Parameters
$parameters: An associative array of parameters, keyed by parameter name, and whose values are arrays of parameter values.
Return value
A list of permutations, which is an array of arrays. Each inner array contains the full list of parameters that have been passed, but with a single value only.
3 calls to DrupalTestCase::generatePermutations()
- CommentInterfaceTest::testCommentClasses in modules/
comment/ comment.test - Tests CSS classes on comments.
- CommentInterfaceTest::testCommentLinks in modules/
comment/ comment.test - Tests comment links.
- NodeRevisionPermissionsTestCase::testNodeRevisionAccess in modules/
node/ node.test - Tests the _node_revision_access() function.
File
-
modules/
simpletest/ drupal_web_test_case.php, line 726
Class
- DrupalTestCase
- Base class for Drupal tests.
Code
public static function generatePermutations($parameters) {
$all_permutations = array(
array(),
);
foreach ($parameters as $parameter => $values) {
$new_permutations = array();
// Iterate over all values of the parameter.
foreach ($values as $value) {
// Iterate over all existing permutations.
foreach ($all_permutations as $permutation) {
// Add the new parameter value to existing permutations.
$new_permutations[] = $permutation + array(
$parameter => $value,
);
}
}
// Replace the old permutations with the new permutations.
$all_permutations = $new_permutations;
}
return $all_permutations;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.