UNPKG

pipe-protocol

Version:

A protocol for large scale Interplanetary Intertool Agent Context

174 lines 6.29 kB
"use strict"; /** * @file Schema Generation Test Suite * @version 1.0.0 * @status IN_DEVELOPMENT * @lastModified 2024-02-04 * * Tests for automatic JSON Schema generation from tool results * * Test Coverage: * - Basic type inference * - Complex object structure handling * - Array type handling * - Nested object handling * - Required field detection */ Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const schemaGeneration_1 = require("../schemaGeneration"); (0, vitest_1.describe)('Schema Generation', () => { (0, vitest_1.describe)('Basic Type Inference', () => { (0, vitest_1.it)('should infer string type', () => { const data = 'test string'; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'string' }); }); (0, vitest_1.it)('should infer number type', () => { const data = 42; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'number' }); }); (0, vitest_1.it)('should infer boolean type', () => { const data = true; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'boolean' }); }); (0, vitest_1.it)('should handle null values', () => { const data = null; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'null' }); }); }); (0, vitest_1.describe)('Object Structure Handling', () => { (0, vitest_1.it)('should generate schema for simple objects', () => { const data = { name: 'test', count: 1, isActive: true }; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'object', properties: { name: { type: 'string' }, count: { type: 'number' }, isActive: { type: 'boolean' } }, required: ['name', 'count', 'isActive'] }); }); (0, vitest_1.it)('should handle nested objects', () => { const data = { user: { id: 1, details: { name: 'test' } } }; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'object', properties: { user: { type: 'object', properties: { id: { type: 'number' }, details: { type: 'object', properties: { name: { type: 'string' } }, required: ['name'] } }, required: ['id', 'details'] } }, required: ['user'] }); }); }); (0, vitest_1.describe)('Array Handling', () => { (0, vitest_1.it)('should handle arrays of primitive types', () => { const data = [1, 2, 3]; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'array', items: { type: 'number' } }); }); (0, vitest_1.it)('should handle arrays of objects', () => { const data = [ { id: 1, name: 'first' }, { id: 2, name: 'second' } ]; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'array', items: { type: 'object', properties: { id: { type: 'number' }, name: { type: 'string' } }, required: ['id', 'name'] } }); }); (0, vitest_1.it)('should handle mixed type arrays', () => { const data = [1, 'test', true]; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'array', items: { oneOf: [ { type: 'number' }, { type: 'string' }, { type: 'boolean' } ] } }); }); }); (0, vitest_1.describe)('Edge Cases', () => { (0, vitest_1.it)('should handle empty objects', () => { const data = {}; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'object', properties: {} }); }); (0, vitest_1.it)('should handle empty arrays', () => { const data = []; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'array', items: {} }); }); (0, vitest_1.it)('should handle undefined values', () => { const data = { optional: undefined }; const schema = (0, schemaGeneration_1.generateSchema)(data); (0, vitest_1.expect)(schema).toEqual({ type: 'object', properties: { optional: { type: 'undefined' } } }); }); }); }); //# sourceMappingURL=schemaGeneration.test.js.map