<?php
function simpletest_automator_export_test($simpletest_automator) {
drupal_set_header('Content-Disposition: attachment; filename="'.
$simpletest_automator->
file .
'"');
$export[] = '<?php';
$export[] = '';
$export[] = '/**';
$export[] = ' * ' . $simpletest_automator->description;
$export[] = ' */';
$export[] = 'class ' . $simpletest_automator->class . ' extends DrupalWebTestCase {';
$export[] = '';
$export =
array_merge($export, _simpletest_automator_export_initial
($simpletest_automator));
$export =
array_merge($export, _simpletest_automator_export_test
($simpletest_automator));
$export[] = '}';
$code = _simpletest_automator_export_to_code($export);
}
function _simpletest_automator_export_initial($simpletest_automator) {
$export[] = 'function getInfo() {';
$export[] = 'return array(';
'value' => "'name' => %s,",
'arguments' =>
array($simpletest_automator->
name),
);
'value' => "'description' => %s,",
'arguments' =>
array($simpletest_automator->
description),
);
'value' => "'group' => %s,",
'arguments' =>
array($simpletest_automator->
test_group),
);
$export[] = ');';
$export[] = '}';
$export[] = '';
$export[] = 'function setUp() {';
'value' =>
'return parent::setUp(' .
implode(', ',
array_fill(0,
count($simpletest_automator->
modules),
'%s')) .
');',
'arguments' => $simpletest_automator->modules,
);
$export[] = '}';
$export[] = '';
return $export;
}
function _simpletest_automator_export_test($simpletest_automator) {
$export[] = 'function ' . $simpletest_automator->method . '() {';
'value' =>
'$user = $this->drupalCreateUser(array(' .
implode(', ',
array_fill(0,
count($simpletest_automator->
permissions),
'%s')) .
'));',
'arguments' => $simpletest_automator->permissions,
);
$export[] = '$this->drupalLogin($user)';
foreach ($simpletest_automator->actions as $action) {
}
$export[] = '}';
return $export;
}
function _simpletest_automator_export_php($simpletest_automator) {
unset($simpletest_automator->
said);
unset($simpletest_automator->
db_prefix);
foreach ($simpletest_automator->actions as $index => $action) {
unset($simpletest_automator->
actions[$index]->
aid);
unset($simpletest_automator->
actions[$index]->
said);
}
}
/**
* Helper function for simpletest_automator_export_test(). Turns a simpletest
* automator export array into actual code.
*
* @param $export
* The export array to convert.
* @return
* The actual code.
*/
function _simpletest_automator_export_to_code($export) {
$code = '';
$indent = 0;
foreach ($export as $line) {
$line =
array('value' =>
$line);
}
$increase =
($data[ord('{')] +
$data[ord('(')]) -
($data[ord('}')] +
$data[ord(')')]);
if ($increase < 0) {
$indent += $increase;
}
if (!
empty($line['value'])) {
for ($i = 0; $i < $indent; $i++) {
$code .= ' ';
}
}
if ($increase > 0) {
$indent += $increase;
}
if (isset($line['arguments'])) {
foreach ($line['arguments'] as $key => $arg) {
$line['arguments'][$key] =
var_export($arg,
TRUE);
}
}
else {
$code .= $line['value'];
}
$code .= "\n";
}
}