<?php
/**
* Prepares datasets for sandbox usage with edge-case handling.
*
* @param string $dataset_name Name of the dataset.
* @param array $data Array of data to be used in the dataset.
* @param array $edge_cases Array of edge cases to include.
* @return array|false Prepared dataset or false on error.
*/
function prepareSandboxDataset(string $dataset_name, array $data, array $edge_cases): array|false
{
// Validate input
if (empty($dataset_name)) {
error_log("Error: Dataset name cannot be empty.");
return false;
}
if (empty($data)) {
error_log("Warning: Dataset data is empty. Using default data.");
$data = [
['id' => 1, 'name' => 'Example 1', 'value' => 10],
['id' => 2, 'name' => 'Example 2', 'value' => 20],
];
}
if (empty($edge_cases)) {
error_log("Warning: No edge cases provided.");
}
// Add edge cases
if (!empty($edge_cases)) {
foreach ($edge_cases as $edge_case) {
if (is_array($edge_case) && isset($edge_case['type']) && isset($edge_case['data'])) {
$data[] = $edge_case['data'];
} else {
error_log("Warning: Invalid edge case format. Skipping: " . json_encode($edge_case));
}
}
}
// Data validation and sanitization (basic example)
foreach ($data as &$item) {
if (!is_array($item) || !isset($item['id']) || !is_numeric($item['id'])) {
error_log("Error: Invalid data format. Skipping item: " . json_encode($item));
unset($item); //remove invalid item
continue;
}
if (!isset($item['name']) || !is_string($item['name'])) {
error_log("Warning: Invalid name format. Setting name to default.");
$item['name'] = 'Default Name';
}
if (!isset($item['value']) || !is_numeric($item['value'])) {
error_log("Warning: Invalid value format. Setting value to 0.");
$item['value'] = 0;
}
}
// Return the prepared dataset
return $data;
}
//Example Usage
$dataset_name = "TestDataset";
$data = [
['id' => 1, 'name' => 'Item A', 'value' => 10],
['id' => 2, 'name' => 'Item B', 'value' => 20],
];
$edge_cases = [
['type' => 'negative_value', 'data' => ['id' => 3, 'name' => 'Item C', 'value' => -5]],
['type' => 'missing_name', 'data' => ['id' => 4, 'value' => 15]],
];
$prepared_dataset = prepareSandboxDataset($dataset_name, $data, $edge_cases);
if ($prepared_dataset !== false) {
echo "<pre>";
print_r($prepared_dataset);
echo "</pre>";
} else {
echo "Dataset preparation failed.";
}
?>
Add your comment