test.govlab/patterns/core/analyzers/representation.distribution.analyzer.test.ts
test.govlab/patterns/core/analyzers/representation.distribution.analyzer.test.ts is a file in Codebase Testing. 57 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import {
driftOf,
overdueOf,
temperaturesOf,
temporalOf,
witnessesOf,
} from "@govlab/patterns/core/analyzers/representation.distribution.analyzer.ts";
const FOUR = 4;
const JUNE = 6;
describe("the distribution analyzer", () => {
it("temporalOf buckets ISO dates by month and refuses anything else", () => {
const temporal = temporalOf(
new Map([
["2026-06-01", 2],
["2026-01-15", 1],
]),
);
expect(temporal).toStrictEqual({
byMonth: [
[1, 1],
[JUNE, 2],
],
first: "2026-01-15",
last: "2026-06-01",
});
expect(temporalOf(new Map([["red", 1]]))).toBeNull();
});
it("witnessesOf reports where each top value was last seen", () => {
expect(witnessesOf([["a", 2]], new Map([["a", FOUR]]))).toStrictEqual([["a", FOUR]]);
});
it("overdueOf ranks values by how long since they appeared", () => {
expect(
overdueOf(
new Map([
["old", 0],
["new", FOUR],
]),
FOUR + 1,
1,
),
).toStrictEqual([["old", FOUR]]);
});
it("temperaturesOf is positive for a value hot in the recent window", () => {
const [[, heat] = ["", 0]] = temperaturesOf(new Map([["a", 1]]), ["a", "a"], FOUR);
expect(heat).toBeGreaterThan(0);
});
it("driftOf is empty for a single record and signed by where a value sits", () => {
expect(driftOf(new Map([["a", 1]]), { indexSum: new Map([["a", 0]]), limit: 1, total: 1 })).toStrictEqual([]);
const [[, drift] = ["", 0]] = driftOf(new Map([["late", 1]]), {
indexSum: new Map([["late", FOUR]]),
limit: 1,
total: FOUR + 1,
});
expect(drift).toBeGreaterThan(0);
});
});