import { expect, test } from "vitest"; import { decideMovie, paretoFilter } from "../../src/shared/algorithm.ts"; test("paretoFilter removes dominated movies", () => { const movies = ["A", "B"]; const people = ["P1", "P2"]; const ratings = { P1: { A: 1, B: 3 }, P2: { A: 2, B: 4 } }; expect(paretoFilter(movies, people, ratings)).toEqual(["B"]); }); test("nash protects against hard no", () => { const movies = ["Consensus", "Polarizing"]; const people = ["A", "B", "C"]; const ratings = { A: { Consensus: 3, Polarizing: 5 }, B: { Consensus: 3, Polarizing: 5 }, C: { Consensus: 3, Polarizing: 0 }, }; const result = decideMovie({ movies, people, ratings }); expect(result.winner.movie).toBe("Consensus"); }); test("tie-breaker uses alphabetical order", () => { const movies = ["Alpha", "Beta"]; const people = ["A", "B"]; const ratings = { A: { Alpha: 2, Beta: 2 }, B: { Alpha: 2, Beta: 2 }, }; const result = decideMovie({ movies, people, ratings }); expect(result.winner.movie).toBe("Alpha"); });