Files
clawdbot/src/agents/usage.test.ts
2026-01-06 18:52:01 +00:00

51 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { hasNonzeroUsage, normalizeUsage } from "./usage.js";
describe("normalizeUsage", () => {
it("normalizes Anthropic-style snake_case usage", () => {
const usage = normalizeUsage({
input_tokens: 1200,
output_tokens: 340,
cache_creation_input_tokens: 200,
cache_read_input_tokens: 50,
total_tokens: 1790,
});
expect(usage).toEqual({
input: 1200,
output: 340,
cacheRead: 50,
cacheWrite: 200,
total: 1790,
});
});
it("normalizes OpenAI-style prompt/completion usage", () => {
const usage = normalizeUsage({
prompt_tokens: 987,
completion_tokens: 123,
total_tokens: 1110,
});
expect(usage).toEqual({
input: 987,
output: 123,
cacheRead: undefined,
cacheWrite: undefined,
total: 1110,
});
});
it("returns undefined for empty usage objects", () => {
expect(normalizeUsage({})).toBeUndefined();
});
it("guards against empty/zero usage overwrites", () => {
expect(hasNonzeroUsage(undefined)).toBe(false);
expect(hasNonzeroUsage(null)).toBe(false);
expect(hasNonzeroUsage({})).toBe(false);
expect(hasNonzeroUsage({ input: 0, output: 0 })).toBe(false);
expect(hasNonzeroUsage({ input: 1 })).toBe(true);
expect(hasNonzeroUsage({ total: 1 })).toBe(true);
});
});