"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * Project Caffeine
 * 单元测试: intentService.ts
 */
const intentService_1 = require("../intentService");
describe('intentService -> generateSearchQueries', () => {
    it('异常流：当输入为空字符串或全空格时，应当返回默认的后备检索词', () => {
        // 验证空字符串
        expect((0, intentService_1.generateSearchQueries)('')).toEqual(['通用研究主题']);
        // 验证全空格
        expect((0, intentService_1.generateSearchQueries)('   ')).toEqual(['通用研究主题']);
        // 验证 null/undefined (通过 any 强制绕过 ts 检查，确保防御性编程生效)
        expect((0, intentService_1.generateSearchQueries)(null)).toEqual(['通用研究主题']);
    });
    it('正常流：当输入包含多个有效关键词时，应当正确分词、去重并返回', () => {
        // 包含重复的 "人工智能"
        const query = '人工智能 机器学习 深度学习 人工智能';
        const result = (0, intentService_1.generateSearchQueries)(query);
        // 验证去重逻辑
        expect(result).toEqual(['人工智能', '机器学习', '深度学习']);
        expect(result).toHaveLength(3);
    });
    it('边界测试：当输入包含各种中英文标点符号时，应当正确替换为空格并分词', () => {
        const query = 'AI芯片，市场趋势？2026;未来发展、产业格局';
        const result = (0, intentService_1.generateSearchQueries)(query);
        // 验证所有的标点都被视为了分隔符
        expect(result).toEqual(['AI芯片', '市场趋势', '2026', '未来发展', '产业格局']);
    });
    it('边界测试：当有效检索词少于 3 个时，应当触发补全机制', () => {
        const query = '量子计算';
        const result = (0, intentService_1.generateSearchQueries)(query);
        // 验证数量是否被补全到了 3 个
        expect(result).toHaveLength(3);
        // 验证第一项是有效词本身
        expect(result[0]).toBe('量子计算');
        // 验证后两项是被 "${query} 相关研究" 占位补全的
        expect(result[1]).toBe('量子计算 相关研究');
        expect(result[2]).toBe('量子计算 相关研究');
    });
    it('边界测试：当有效检索词超过 5 个时，应当执行截取操作', () => {
        const query = '苹果 香蕉 橘子 葡萄 西瓜 芒果 樱桃';
        const result = (0, intentService_1.generateSearchQueries)(query);
        // 验证长度严格限制在 5
        expect(result).toHaveLength(5);
        // 验证截取的是前 5 个有效词
        expect(result).toEqual(['苹果', '香蕉', '橘子', '葡萄', '西瓜']);
    });
    it('边界测试：应当自动过滤掉长度小于 2 的无意义单字（如停用词）', () => {
        // "论"、"的"、"与" 长度均为 1，应该被抛弃
        const query = '论 AI 的 发展 与 IT 行业';
        const result = (0, intentService_1.generateSearchQueries)(query);
        // 验证单字被正确过滤
        expect(result).toEqual(['AI', '发展', 'IT', '行业']);
    });
});
//# sourceMappingURL=intentService.test.js.map