1. <?php
  2. /**
  3. * Prepares datasets for sandbox usage with edge-case handling.
  4. *
  5. * @param string $dataset_name Name of the dataset.
  6. * @param array $data Array of data to be used in the dataset.
  7. * @param array $edge_cases Array of edge cases to include.
  8. * @return array|false Prepared dataset or false on error.
  9. */
  10. function prepareSandboxDataset(string $dataset_name, array $data, array $edge_cases): array|false
  11. {
  12. // Validate input
  13. if (empty($dataset_name)) {
  14. error_log("Error: Dataset name cannot be empty.");
  15. return false;
  16. }
  17. if (empty($data)) {
  18. error_log("Warning: Dataset data is empty. Using default data.");
  19. $data = [
  20. ['id' => 1, 'name' => 'Example 1', 'value' => 10],
  21. ['id' => 2, 'name' => 'Example 2', 'value' => 20],
  22. ];
  23. }
  24. if (empty($edge_cases)) {
  25. error_log("Warning: No edge cases provided.");
  26. }
  27. // Add edge cases
  28. if (!empty($edge_cases)) {
  29. foreach ($edge_cases as $edge_case) {
  30. if (is_array($edge_case) && isset($edge_case['type']) && isset($edge_case['data'])) {
  31. $data[] = $edge_case['data'];
  32. } else {
  33. error_log("Warning: Invalid edge case format. Skipping: " . json_encode($edge_case));
  34. }
  35. }
  36. }
  37. // Data validation and sanitization (basic example)
  38. foreach ($data as &$item) {
  39. if (!is_array($item) || !isset($item['id']) || !is_numeric($item['id'])) {
  40. error_log("Error: Invalid data format. Skipping item: " . json_encode($item));
  41. unset($item); //remove invalid item
  42. continue;
  43. }
  44. if (!isset($item['name']) || !is_string($item['name'])) {
  45. error_log("Warning: Invalid name format. Setting name to default.");
  46. $item['name'] = 'Default Name';
  47. }
  48. if (!isset($item['value']) || !is_numeric($item['value'])) {
  49. error_log("Warning: Invalid value format. Setting value to 0.");
  50. $item['value'] = 0;
  51. }
  52. }
  53. // Return the prepared dataset
  54. return $data;
  55. }
  56. //Example Usage
  57. $dataset_name = "TestDataset";
  58. $data = [
  59. ['id' => 1, 'name' => 'Item A', 'value' => 10],
  60. ['id' => 2, 'name' => 'Item B', 'value' => 20],
  61. ];
  62. $edge_cases = [
  63. ['type' => 'negative_value', 'data' => ['id' => 3, 'name' => 'Item C', 'value' => -5]],
  64. ['type' => 'missing_name', 'data' => ['id' => 4, 'value' => 15]],
  65. ];
  66. $prepared_dataset = prepareSandboxDataset($dataset_name, $data, $edge_cases);
  67. if ($prepared_dataset !== false) {
  68. echo "<pre>";
  69. print_r($prepared_dataset);
  70. echo "</pre>";
  71. } else {
  72. echo "Dataset preparation failed.";
  73. }
  74. ?>

Add your comment