test.govlab/context/core/analyzers/algorithm.analyzer.test.ts

test.govlab/context/core/analyzers/algorithm.analyzer.test.ts is a file in Codebase Testing. 46 lines of code and 0 definitions.

import {
    allForces,
    clustersOf,
    concernJoinOf,
    traverseComposes,
} from "@govlab/context/core/analyzers/algorithm.analyzer.ts";
import type { Contract } from "@govlab/context";
import assert from "node:assert/strict";
import { test } from "vitest";

const contract = (id: string, force: string[], composes: string[] = []): Contract => ({
    composes,
    domain: "g",
    flow: [],
    force,
    id,
    intent: "",
    invariant: "",
    productions: [],
    tier: "leaf",
    title: id,
});

const CONTRACTS = [
    contract("hub", ["speed"], ["spoke-a", "spoke-b"]),
    contract("spoke-a", ["speed"]),
    contract("spoke-b", ["speed", "care"]),
];

test("allForces lists each force once, sorted", () => {
    assert.deepEqual(allForces(CONTRACTS), ["care", "speed"]);
});

test("clustersOf splits each force's contracts into a composed core and the rest", () => {
    const speed = clustersOf(CONTRACTS).find((cluster) => cluster.force === "speed");
    assert.ok(speed);
    assert.deepEqual([...speed.core, ...speed.supporting].toSorted(), ["hub", "spoke-a", "spoke-b"]);
});

test("concernJoinOf joins each force to its contracts and to what the resolvers answer", () => {
    const rows = concernJoinOf(CONTRACTS, { principlesForForce: (force) => [`${force}-principle`] });
    assert.deepEqual(
        rows.find((row) => row.force === "care"),
        { concerns: [], contracts: ["spoke-b"], force: "care", principles: ["care-principle"] },
    );
});

test("traverseComposes walks breadth first from the seed and visits each contract once", () => {
    const byId = new Map(CONTRACTS.map((entry) => [entry.id, entry]));
    assert.deepEqual(traverseComposes(byId, ["hub", "hub"]), ["hub", "spoke-a", "spoke-b"]);
    assert.deepEqual(traverseComposes(byId, ["ghost"]), ["ghost"]);
});