test.govlab/patterns/core/analyzers/information.analyzer.test.ts

test.govlab/patterns/core/analyzers/information.analyzer.test.ts is a file in Codebase Testing. 25 lines of code and 0 definitions.

import { createCompressibility, entropyBits } from "@govlab/patterns/core/analyzers/information.analyzer.ts";
import { describe, expect, it } from "vitest";

const TWO = 2;

describe("entropyBits", () => {
    it("is one bit for two equally likely values and zero for none", () => {
        expect(entropyBits([1, 1], TWO)).toBe(1);
        expect(entropyBits([], 0)).toBe(0);
    });
});

describe("createCompressibility", () => {
    it("scores repetitive input lower than varied input, bounded to [0, 1]", () => {
        const repetitive = createCompressibility();
        repetitive.push("aaaaaaaaaaaaaaaaaaaaaaaa");
        const varied = createCompressibility();
        varied.push("the quick brown fox jumps over lazy dogs and vexed nymphs");
        expect(repetitive.ratio()).toBeGreaterThanOrEqual(0);
        expect(varied.ratio()).toBeLessThanOrEqual(1);
        expect(repetitive.ratio()).toBeLessThan(varied.ratio());
    });

    it("accumulates across streamed chunks", () => {
        const stream = createCompressibility();
        stream.push("ab", "ab", "ab");
        expect(stream.ratio()).toBeGreaterThanOrEqual(0);
    });
});