protected function DataTestCaseUI::randomFields in Data 7
Same name and namespace in other branches
- 6 data_ui/tests/data_ui.test \DataTestCaseUI::randomFields()
Generate N random fields. Will create at least 1 field.
1 call to DataTestCaseUI::randomFields()
- DataTestCaseUI::createTable in data_ui/
tests/ data_ui.test - Create a table.
File
- data_ui/
tests/ data_ui.test, line 239
Class
- DataTestCaseUI
- Test basic Data API functionality.
Code
protected function randomFields($n = 5) {
$fields = array();
$excluded_types = array();
for ($i = 0; $i < $n - 1; $i++) {
$label = $this
->uniqueRandomName();
$name = data_safe_name($label);
// Get a random type. Make sure that serial does not occur twice.
$type = $this
->randomValue(data_get_field_types(), $excluded_types);
if ($type == 'serial') {
$excluded_types['serial'] = 'serial';
}
if (!empty($type)) {
$fields[$name] = array(
'name' => $name,
'label' => $label,
'type' => $type,
);
if (rand(0, 1)) {
$fields[$name]['unsigned'] = 1;
}
// Auto increment fields must be indexed.
if ($fields[$name]['type'] == 'serial' || rand(0, 1)) {
$fields[$name]['index'] = 1;
}
if (rand(0, 1)) {
$fields[$name]['primary'] = 1;
}
}
}
// Make sure we have at least one field that is text, PK and indexed.
$name = $this
->uniqueRandomName();
$fields[data_safe_name($name)] = array(
'name' => data_safe_name($name),
'label' => $name,
'type' => 'text',
'index' => 1,
'primary' => 1,
);
return $fields;
}