mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
Add unit tests for strategy selector (17), lite compression (20), stats module (11), and DB module (7). Add integration tests for full compression pipeline (6). All 61 tests pass. Remove broken integration test files from previous WIP. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
93 lines
3.1 KiB
TypeScript
93 lines
3.1 KiB
TypeScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
estimateCompressionTokens,
|
|
createCompressionStats,
|
|
trackCompressionStats,
|
|
} from "../../../open-sse/services/compression/stats.ts";
|
|
|
|
describe("estimateCompressionTokens", () => {
|
|
it("returns 0 for null", () => {
|
|
assert.equal(estimateCompressionTokens(null), 0);
|
|
});
|
|
|
|
it("returns 0 for undefined", () => {
|
|
assert.equal(estimateCompressionTokens(undefined), 0);
|
|
});
|
|
|
|
it("returns 0 for empty string", () => {
|
|
assert.equal(estimateCompressionTokens(""), 0);
|
|
});
|
|
|
|
it("estimates tokens from text (chars/4)", () => {
|
|
assert.equal(estimateCompressionTokens("hello world"), 3);
|
|
});
|
|
|
|
it("estimates tokens from object", () => {
|
|
const tokens = estimateCompressionTokens({ messages: [{ role: "user", content: "test" }] });
|
|
assert.ok(tokens > 0);
|
|
});
|
|
|
|
it("handles long strings", () => {
|
|
const tokens = estimateCompressionTokens("x".repeat(400));
|
|
assert.equal(tokens, 100);
|
|
});
|
|
});
|
|
|
|
describe("createCompressionStats", () => {
|
|
it("calculates savings correctly", () => {
|
|
const original = { messages: [{ role: "user", content: "x".repeat(100) }] };
|
|
const compressed = { messages: [{ role: "user", content: "x".repeat(80) }] };
|
|
const origTokens = Math.ceil(JSON.stringify(original).length / 4);
|
|
const compTokens = Math.ceil(JSON.stringify(compressed).length / 4);
|
|
const expectedSavings = Math.round(((origTokens - compTokens) / origTokens) * 10000) / 100;
|
|
const stats = createCompressionStats(original, compressed, "lite", ["whitespace"]);
|
|
assert.equal(stats.originalTokens, origTokens);
|
|
assert.equal(stats.compressedTokens, compTokens);
|
|
assert.equal(stats.savingsPercent, expectedSavings);
|
|
assert.deepEqual(stats.techniquesUsed, ["whitespace"]);
|
|
assert.equal(stats.mode, "lite");
|
|
assert.ok(stats.timestamp > 0);
|
|
});
|
|
|
|
it("handles zero original tokens", () => {
|
|
const original = {};
|
|
const compressed = {};
|
|
const stats = createCompressionStats(original, compressed, "off", []);
|
|
assert.equal(stats.savingsPercent, 0);
|
|
});
|
|
|
|
it("rounds savings to 2 decimal places", () => {
|
|
const original = { messages: [{ role: "user", content: "x".repeat(97) }] };
|
|
const compressed = { messages: [{ role: "user", content: "x".repeat(80) }] };
|
|
const stats = createCompressionStats(original, compressed, "lite", ["test"]);
|
|
assert.ok(Number.isFinite(stats.savingsPercent));
|
|
});
|
|
});
|
|
|
|
describe("trackCompressionStats", () => {
|
|
it("does not throw for zero tokens", () => {
|
|
const stats = {
|
|
originalTokens: 0,
|
|
compressedTokens: 0,
|
|
savingsPercent: 0,
|
|
techniquesUsed: [],
|
|
mode: "off" as const,
|
|
timestamp: Date.now(),
|
|
};
|
|
assert.doesNotThrow(() => trackCompressionStats(stats));
|
|
});
|
|
|
|
it("logs compression stats", () => {
|
|
const stats = {
|
|
originalTokens: 100,
|
|
compressedTokens: 80,
|
|
savingsPercent: 20,
|
|
techniquesUsed: ["whitespace"],
|
|
mode: "lite" as const,
|
|
timestamp: Date.now(),
|
|
};
|
|
assert.doesNotThrow(() => trackCompressionStats(stats));
|
|
});
|
|
});
|