import { describe, expect, it } from "vitest"; import { findSpeechSelectionStartOffset, splitSpeechTextIntoChunks, stripSpeechMarkdown } from "./speech"; describe("Agent 语音文本处理", () => { it("定位经过空白压缩的选择文本", () => { const text = "第一段内容。\n第二段 包含空格。"; expect(findSpeechSelectionStartOffset(text, "第二段 包含空格")).toBe(text.indexOf("第二段")); expect(findSpeechSelectionStartOffset(text, "不存在")).toBeNull(); }); it("按句子拆分长文本", () => { const chunks = splitSpeechTextIntoChunks(`${"甲".repeat(260)}。${"乙".repeat(260)}。`); expect(chunks).toHaveLength(2); expect(chunks.join("")).toContain("乙"); }); it("移除会干扰朗读的 Markdown 标记", () => { expect(stripSpeechMarkdown("## 分析结果\n**水位** [详情](https://example.com)")).toBe("分析结果\n水位 详情"); }); });