33 lines
1.0 KiB
JavaScript
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);
|
|
});
|
|
});
|