export default {
  functionName: 'validateJSON',
  prompt: `// Write an async JavaScript function 'validateJSON' that validates a JSON object against a JSON Schema.
// - The function must accept a JSON object and a JSON Schema object.
// - You MUST use dynamic import() to load one or more libraries from a CDN for JSON Schema validation.
// - Return an object: { valid: boolean, errors: array } where errors contains validation error messages if invalid.
// - Handle nested schemas, required fields, type validation, and pattern matching.`,
  runTest: async (validateJSON) => {
    const assert = {
      strictEqual: (a, e, m) => { if (a !== e) throw new Error(m || `FAIL: ${a} !== ${e}`) },
      ok: (v, m) => { if (!v) throw new Error(m) },
    };
    const schema = {
      type: 'object',
      required: ['name', 'age'],
      properties: {
        name: { type: 'string', minLength: 1 },
        age: { type: 'number', minimum: 0 },
        email: { type: 'string', pattern: '^[^@]+@[^@]+\\.[^@]+$' }
      }
    };
    const validData = { name: 'Alice', age: 30, email: 'alice@example.com' };
    const invalidData = { name: '', age: -5 };
    
    const validResult = await validateJSON(validData, schema);
    assert.strictEqual(validResult.valid, true, 'Test Failed: Valid data marked as invalid.');
    
    const invalidResult = await validateJSON(invalidData, schema);
    assert.strictEqual(invalidResult.valid, false, 'Test Failed: Invalid data marked as valid.');
    assert.ok(Array.isArray(invalidResult.errors) && invalidResult.errors.length > 0, 'Test Failed: No errors returned for invalid data.');
  }
};


