Files
healer-man/src/game/dungeonLevelScaling.test.ts
T
2026-09-17 09:13:15 -04:00

33 lines
1.6 KiB
TypeScript

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));
}
});
});