import { describe, expect, it } from "vitest"; import { dungeonEnemyHealthBaseline, scaledDungeonEnemyLevel } from "./dungeonLevelScaling"; describe("normal dungeon level scaling", () => { it("scales opening-tier trash to the character and gives bosses a one-level edge", () => { expect(scaledDungeonEnemyLevel(1, false)).toBe(1); expect(scaledDungeonEnemyLevel(1, true)).toBe(2); expect(scaledDungeonEnemyLevel(15, false)).toBe(15); expect(scaledDungeonEnemyLevel(15, true)).toBe(16); }); it("clamps encounters to the player level cap", () => { expect(scaledDungeonEnemyLevel(80, false)).toBe(80); expect(scaledDungeonEnemyLevel(80, true)).toBe(80); }); it("uses source-calibrated health curves for every party", () => { expect(dungeonEnemyHealthBaseline(5, "wow")).toBe(306); expect(dungeonEnemyHealthBaseline(5, "rom")).toBe(1_700); expect(dungeonEnemyHealthBaseline(5, "coa")).toBe(2_587); expect(dungeonEnemyHealthBaseline(20, "rom")).toBeGreaterThan(dungeonEnemyHealthBaseline(8, "rom")); expect(dungeonEnemyHealthBaseline(20, "coa")).toBeGreaterThan(dungeonEnemyHealthBaseline(20, "rom")); }); it("clamps every party curve to the supported player-level range", () => { for (const source of ["wow", "rom", "coa"] as const) { expect(dungeonEnemyHealthBaseline(0, source)).toBe(dungeonEnemyHealthBaseline(1, source)); expect(dungeonEnemyHealthBaseline(100, source)).toBe(dungeonEnemyHealthBaseline(80, source)); expect(dungeonEnemyHealthBaseline(Number.NaN, source)).toBe(dungeonEnemyHealthBaseline(1, source)); } }); });