import { formatBytes, formatMicros, formatTime } from "@/lib/format";

test("formatTime renders unix seconds in the given locale and zone", () => {
	// 2024-01-01T00:00:00Z; ICU emits U+202F before AM/PM in recent Node.
	expect(formatTime(1704067200, "en-US", "UTC").replace(/ /g, " ")).toBe("Jan 1, 2024, 12:00:00 AM");
});

test("formatBytes humanizes with binary units", () => {
	expect(formatBytes(0)).toBe("0 B");
	expect(formatBytes(1023)).toBe("1023 B");
	expect(formatBytes(1024)).toBe("1.0 KiB");
	expect(formatBytes(1536)).toBe("1.5 KiB");
	expect(formatBytes(5 * 1024 * 1024)).toBe("5.0 MiB");
	expect(formatBytes(3 * 1024 * 1024 * 1024)).toBe("3.0 GiB");
	expect(formatBytes(2 * 1024 ** 4)).toBe("2.0 TiB");
});

test("formatMicros renders milliseconds with one decimal", () => {
	expect(formatMicros(0)).toBe("0.0 ms");
	expect(formatMicros(1234)).toBe("1.2 ms");
	expect(formatMicros(999)).toBe("1.0 ms");
	expect(formatMicros(2_500_000)).toBe("2500.0 ms");
});
