import { describe, it, expect } from "vitest"; import { normalizePhrase, matchRule, DEFAULT_RULES } from "../../lib/rules.js"; describe("normalizePhrase", () => { it("uppercases and strips spaces + punctuation", () => { expect(normalizePhrase("U OK?")).toBe("UOK"); expect(normalizePhrase("u ok")).toBe("UOK"); expect(normalizePhrase("S.O.S")).toBe("SOS"); }); }); describe("matchRule", () => { it("fires on punctuation/spacing variants of the input", () => { expect(matchRule("U OK", DEFAULT_RULES)?.output).toBe("Y"); expect(matchRule("UOK", DEFAULT_RULES)?.output).toBe("Y"); expect(matchRule("SOS", DEFAULT_RULES)?.output).toBe("WTF"); }); it("returns null for no match or empty text", () => { expect(matchRule("HELLO", DEFAULT_RULES)).toBeNull(); expect(matchRule("", DEFAULT_RULES)).toBeNull(); }); it("ignores rules missing input or output", () => { const rules = [{ input: "A", output: "" }, { input: "", output: "B" }]; expect(matchRule("A", rules)).toBeNull(); }); });