import { fileURLToPath } from "node:url"; import { afterEach, describe, expect, it } from "vitest"; import { createPiSession, type PiSession, } from "../../../test/fixture/create-pi-session.ts"; import { __test } from "../index.ts"; let session: PiSession | undefined; afterEach(async () => { await session?.dispose(); session = undefined; }); describe("context-size contract", () => { it("loads through the owned fixture", async () => { session = await createPiSession({ extensionPaths: [fileURLToPath(new URL("../index.ts", import.meta.url))], }); expect(session.errors).toEqual([]); expect(session.extensions).toHaveLength(1); }); it("renders the tui view as a bar alone", () => { expect(__test.renderThinBar(26)).toBe("━━━───────"); expect(__test.renderThinBar(null)).toBe("──────────"); }); it("spells out the non-tui label with human-readable headroom", () => { expect( __test.buildPlainLabel({ tokens: 262_000, contextWindow: 1_000_000, percent: 26.2, }), ).toBe("context 26% used, 738k left"); expect( __test.buildPlainLabel({ tokens: null, contextWindow: 1_000_000, percent: null, }), ).toBe("context unknown"); }); it("scales token counts through k and M", () => { expect(__test.formatTokens(940)).toBe("940"); expect(__test.formatTokens(1_180)).toBe("1.2k"); expect(__test.formatTokens(262_000)).toBe("262k"); expect(__test.formatTokens(1_618_000)).toBe("1.6M"); expect(__test.formatTokens(121_527_000)).toBe("122M"); }); });