import {
  findSpeechSelectionStartOffset,
  splitSpeechTextIntoChunks,
} from "./speechStartOptions";

describe("findSpeechSelectionStartOffset", () => {
  it("finds the reading start from selected reply text", () => {
    const text = "第一段内容。\n\n第二段  包含空格。\n第三段内容。";

    expect(findSpeechSelectionStartOffset(text, "第二段 包含空格")).toBe(
      text.indexOf("第二段"),
    );
    expect(findSpeechSelectionStartOffset(text, "第三段")).toBe(text.indexOf("第三段"));
    expect(findSpeechSelectionStartOffset(text, "不存在")).toBeNull();
  });
});

describe("splitSpeechTextIntoChunks", () => {
  it("splits long text into bounded chunks", () => {
    const text = Array.from({ length: 80 }, (_, index) => `第${index}句内容足够长。`).join("");
    const chunks = splitSpeechTextIntoChunks(text);

    expect(chunks.length).toBeGreaterThan(1);
    expect(chunks.every((chunk) => chunk.length <= 520)).toBe(true);
    expect(chunks.join("")).toBe(text);
  });

  it("keeps short text as one chunk", () => {
    expect(splitSpeechTextIntoChunks("短句。")).toEqual(["短句。"]);
  });
});
