20 lines
663 B
TypeScript
20 lines
663 B
TypeScript
import { assertAlmostEquals, assertThrows } from "@std/assert";
|
|
import { reactionWeight, scoreForUser, totalScore } from "./scoring.ts";
|
|
|
|
Deno.test("one reaction by one user scores one point", () => {
|
|
assertAlmostEquals(scoreForUser(1), 1);
|
|
});
|
|
|
|
Deno.test("repeat reactions by one user have diminishing weight", () => {
|
|
assertAlmostEquals(reactionWeight(2), 1 / 3);
|
|
assertAlmostEquals(scoreForUser(3), 1 + 1 / 3 + 1 / 5);
|
|
});
|
|
|
|
Deno.test("total score sums each user's score", () => {
|
|
assertAlmostEquals(totalScore([1, 1, 2]), 3 + 1 / 3);
|
|
});
|
|
|
|
Deno.test("invalid reaction counts are rejected", () => {
|
|
assertThrows(() => scoreForUser(0), RangeError);
|
|
});
|