import { describe, expect, it } from "vitest"; import { WOW335_MAGE_FROSTBITE_FREEZE_DURATION_MS, wow335MageFrostbiteProcDurationMs, } from "./wow335MageFrostbiteRuntime"; describe("WoW Mage Frostbite profile", () => { it("uses the generated 5/10/15% ranks and four-second duration", () => { expect(wow335MageFrostbiteProcDurationMs(1, "frost", true, 1, 0.049)) .toBe(WOW335_MAGE_FROSTBITE_FREEZE_DURATION_MS); expect(wow335MageFrostbiteProcDurationMs(1, "frost", true, 1, 0.05)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(2, "frost", true, 1, 0.099)) .toBe(WOW335_MAGE_FROSTBITE_FREEZE_DURATION_MS); expect(wow335MageFrostbiteProcDurationMs(2, "frost", true, 1, 0.1)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(3, "frost", true, 1, 0.149)) .toBe(WOW335_MAGE_FROSTBITE_FREEZE_DURATION_MS); expect(wow335MageFrostbiteProcDurationMs(3, "frost", true, 1, 0.15)).toBe(0); }); it("requires landed, positive Frost damage and keeps untrained ranks inactive", () => { expect(wow335MageFrostbiteProcDurationMs(0, "frost", true, 1, 0)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(3, "fire", true, 1, 0)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(3, "frost", false, 1, 0)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(3, "frost", true, 0, 0)).toBe(0); expect(wow335MageFrostbiteProcDurationMs(3, "frost", true, 1, Number.NaN)).toBe(0); }); });