
























1+// Control UI tests for the compact token count formatter shared across chat surfaces.
2+import { describe, expect, it } from "vitest";
3+import { formatCompactTokenCount } from "./token-format.ts";
4+5+describe("formatCompactTokenCount", () => {
6+it("formats values under 1,000 as-is", () => {
7+expect(formatCompactTokenCount(0)).toBe("0");
8+expect(formatCompactTokenCount(999)).toBe("999");
9+});
10+11+it("formats thousands with one decimal, trimming a trailing .0", () => {
12+expect(formatCompactTokenCount(1_000)).toBe("1k");
13+expect(formatCompactTokenCount(214_500)).toBe("214.5k");
14+expect(formatCompactTokenCount(99_950)).toBe("100k");
15+});
16+17+it("formats millions with one decimal, trimming a trailing .0", () => {
18+expect(formatCompactTokenCount(1_000_000)).toBe("1M");
19+expect(formatCompactTokenCount(1_500_000)).toBe("1.5M");
20+});
21+22+it("rolls values that round up to 1000.0k over into the M branch instead of showing 1000k", () => {
23+// Regression test: 999,950-999,999 round to "1000.0" at one-decimal
24+// thousands precision. Before the fix, the >= 1_000_000 branch check
25+// ran on the raw value (which is still < 1_000_000), so these fell
26+// through to the k branch and displayed the nonsensical "1000k".
27+expect(formatCompactTokenCount(999_999)).toBe("1M");
28+expect(formatCompactTokenCount(999_950)).toBe("1M");
29+expect(formatCompactTokenCount(999_500)).toBe("999.5k");
30+});
31+32+it("does not roll over values just below the rounding boundary", () => {
33+expect(formatCompactTokenCount(999_949)).toBe("999.9k");
34+expect(formatCompactTokenCount(999_499)).toBe("999.5k");
35+});
36+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。