function generate_args($args = array(), $generation_definitions = null, &$callbacks = null) { $callbacks = array(); if (is_null($generation_definitions)) { $generation_definitions = $this->default_generation_definitions; } // Use the same incrementor for all fields belonging to this object. $gen = new WP_UnitTest_Generator_Sequence(); $incr = $gen->get_incr(); foreach (array_keys($generation_definitions) as $field_name) { if (!isset($args[$field_name])) { $generator = $generation_definitions[$field_name]; if (is_scalar($generator)) { $args[$field_name] = $generator; } elseif (is_object($generator) && method_exists($generator, 'call')) { $callbacks[$field_name] = $generator; } elseif (is_object($generator)) { $args[$field_name] = sprintf($generator->get_template_string(), $incr); } else { return new WP_Error('invalid_argument', 'Factory default value should be either a scalar or an generator object.'); } } } return $args; }