33 lines
1.6 KiB
TypeScript
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));
|
|
}
|
|
});
|
|
});
|