Files
movie-select/tests/algorithm.test.ts
2026-03-01 11:44:21 +01:00

30 lines
1021 B
TypeScript

import { expect, test } from "bun:test";
import { decideMovie, paretoFilter } from "../src/client/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");
});