import { describe, it, expect } from "vitest"; import { clamp, formatBytes, paginate } from "../src/utils/format.js"; describe("utils/format", () => { it("clamp works", () => { expect(clamp(5, 0, 10)).toBe(5); expect(clamp(-5, 0, 10)).toBe(0); expect(clamp(15, 0, 10)).toBe(10); }); it("formatBytes formats correctly", () => { expect(formatBytes(0)).toBe("0 B"); expect(formatBytes(512)).toBe("512 B"); expect(formatBytes(1024)).toBe("1 KB"); expect(formatBytes(10 * 1024)).toBe("10 KB"); expect(formatBytes(1536)).toBe("1.5 KB"); }); it("paginate derives indices and total pages", () => { const p1 = paginate(100, 1, 25); expect(p1).toEqual({ start: 0, end: 25, totalPages: 4, page: 1, perPage: 25 }); const p4 = paginate(100, 4, 25); expect(p4.start).toBe(75); expect(p4.end).toBe(100); expect(p4.totalPages).toBe(4); const clampPage = paginate(10, 99, 25); expect(clampPage.page).toBe(1); // totalPages becomes 1 expect(clampPage.totalPages).toBe(1); }); });