Here’s a snippet I created to generate invalid data from a valid key-value array. It’s really handy for testing. Feel free to use it.
/**
* Gatling gun takes an array of valid params and returns every
* combination of invalid data caused by blanking out individual params.
*
* Example:
*
* $validData = array('firstName' => 'Gatling',
* 'lastName' => 'Gun',
* 'age' => 12);
*
* $ggData = gatlingGun($validData);
*
* $ggData = array(
* array('firstName' => '', 'lastName' => '', 'age' => ''),
* array('firstName' => '', 'lastName' => '', 'age' => 12),
* array('firstName' => '', 'lastName' => 'Gun', 'age' => ''),
* array('firstName' => '', 'lastName' => 'Gun', 'age' => 12),
* array('firstName' => 'Gatling', 'lastName' => '', 'age' => ''),
* array('firstName' => 'Gatling', 'lastName' => '', 'age' => 12),
* array('firstName' => 'Gatling', 'lastName' => 'Gun', 'age' => '')
* );
*
*
* @param array $validData
* @return array
*
*/
function gatlingGun($validData)
{
$original = $validData;
$invalidCombinations = array();
$max = count($original);
$keys = array_keys($original);
$combinations = pow(2, $max) - 1;
for ($i = 0; $i < $combinations; $i++) {
$tmp = array();
$j = count($keys) - 1;
foreach ($keys as $k => $key) {
$tmp[$key] = (($i & pow(2,$j)) == 0) ? '' : $original[$key];
$j--;
}
$invalidCombinations[] = $tmp;
}
return $invalidCombinations;
}
Just be careful, the number of combinations it comes up with is 2^n - 1
. So the number of invalid combinations from an array with 10 key-value pairs will quickly balloon to 1023.
Do drop me a line to let me know if this has been helpful for you.