import { describe, it, expect } from "vitest"; import { normalizeSeparators } from "../../extensions/compress/stages/separator.js"; const NORM = 8; // NORM_LENGTH constant from separator.ts describe("normalizeSeparators", () => { it("returns unchanged text with no separators", () => { const text = "hello\nworld"; expect(normalizeSeparators(text)).toBe(text); }); it("shortens long ASCII dash separator", () => { const long = "-".repeat(60); expect(normalizeSeparators(long)).toBe("-".repeat(NORM)); }); it("shortens long equals separator", () => { const long = "=".repeat(40); expect(normalizeSeparators(long)).toBe("=".repeat(NORM)); }); it("shortens long Unicode box-drawing separator (─)", () => { const long = "─".repeat(50); expect(normalizeSeparators(long)).toBe("─".repeat(NORM)); }); it("shortens long double box separator (═)", () => { const long = "═".repeat(50); expect(normalizeSeparators(long)).toBe("═".repeat(NORM)); }); it("leaves separators at or below NORM_LENGTH unchanged", () => { const short = "-".repeat(NORM); expect(normalizeSeparators(short)).toBe(short); const shorter = "-".repeat(NORM - 1); expect(normalizeSeparators(shorter)).toBe(shorter); }); it("normalizes separator lines within multiline text", () => { const input = "header\n" + "─".repeat(60) + "\ncontent"; const expected = "header\n" + "─".repeat(NORM) + "\ncontent"; expect(normalizeSeparators(input)).toBe(expected); }); it("handles multiple separator lines", () => { const sep = "=".repeat(40); const input = sep + "\ntext\n" + sep; const norm = "=".repeat(NORM); expect(normalizeSeparators(input)).toBe(norm + "\ntext\n" + norm); }); it("does not normalize mixed-character lines", () => { const text = "---===---"; expect(normalizeSeparators(text)).toBe(text); }); it("does not normalize regular text that starts with a separator char", () => { // Only pure separator lines should be normalized const text = "- item one"; expect(normalizeSeparators(text)).toBe(text); }); });