diff --git a/app/services/simulations/__tests__/cs-major-simulator.test.ts b/app/services/simulations/__tests__/cs-major-simulator.test.ts index fee4aae..46d3eca 100644 --- a/app/services/simulations/__tests__/cs-major-simulator.test.ts +++ b/app/services/simulations/__tests__/cs-major-simulator.test.ts @@ -319,16 +319,16 @@ describe("simulateChampionsStage", () => { // ─── calcStage3ExitQP ───────────────────────────────────────────────────────── -describe("calcStage3ExitQP", () => { - function makeStage3QPConfig(): Map { - // Placements 9–16 with descending QP: 9→80, 10→70, ..., 16→10 - const config = new Map(); - for (let i = 9; i <= 16; i++) { - config.set(i, (17 - i) * 10); - } - return config; +// Placements 9–16 with descending QP: 9→80, 10→70, ..., 16→10 +function makeStage3QPConfig(): Map { + const config = new Map(); + for (let i = 9; i <= 16; i++) { + config.set(i, (17 - i) * 10); } + return config; +} +describe("calcStage3ExitQP", () => { it("returns empty map for empty input", () => { const result = calcStage3ExitQP([], new Map()); expect(result.size).toBe(0); @@ -376,8 +376,11 @@ describe("calcStage3ExitQP", () => { const config = makeStage3QPConfig(); const result = calcStage3ExitQP(elim, config); - expect(result.get("high")!).toBeGreaterThan(result.get("mid")!); - expect(result.get("mid")!).toBeGreaterThan(result.get("low")!); + const highQP = result.get("high") ?? 0; + const midQP = result.get("mid") ?? 0; + const lowQP = result.get("low") ?? 0; + expect(highQP).toBeGreaterThan(midQP); + expect(midQP).toBeGreaterThan(lowQP); }); }); diff --git a/app/services/simulations/cs-major-simulator.ts b/app/services/simulations/cs-major-simulator.ts index 538a929..2213d61 100644 --- a/app/services/simulations/cs-major-simulator.ts +++ b/app/services/simulations/cs-major-simulator.ts @@ -736,7 +736,8 @@ export function simulateOneMajor( const byPlacement = new Map(); for (const [pid, placement] of champResult.placements) { if (!byPlacement.has(placement)) byPlacement.set(placement, []); - byPlacement.get(placement)!.push(pid); + const group = byPlacement.get(placement); + if (group) group.push(pid); } for (const [placement, pids] of byPlacement) { const slots = Array.from({ length: pids.length }, (_, i) => placement + i);