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

> 25 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-patterns-core-analyzers-information-analyzer-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/patterns/core/analyzers/information.analyzer.test.ts.txt

Listed in [test.govlab/patterns/core/analyzers](https://banes-lab.com/api/source/testing/test.govlab/patterns/core/analyzers.md), after [test.govlab/patterns/core/analyzers/field.analyzer.test.ts](https://banes-lab.com/source/testing/test.govlab/patterns/core/analyzers/field.analyzer.test.ts.md) and before [test.govlab/patterns/core/analyzers/representation.distribution.analyzer.test.ts](https://banes-lab.com/source/testing/test.govlab/patterns/core/analyzers/representation.distribution.analyzer.test.ts.md).

## Contained in

- [test.govlab/patterns/core/analyzers](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-patterns-core-analyzers.md)

## Source

```typescript
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);
    });
});
```
