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.