Files
q-edit/tests/utils.format.test.mjs
2025-09-02 21:04:17 -04:00

33 lines
1.0 KiB
JavaScript

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);
});
});