Gates / frontend (push) Successful in 1m33s
Gates / test (push) Successful in 1m48s
Gates / test-aarch64 (push) Successful in 7m10s
Gates / package (push) Successful in 5m31s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 14m51s
45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { formatAge, formatBytes, formatDuration, 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("formatAge steps up a unit at each boundary and truncates", () => {
|
||
expect(formatAge(0)).toBe("0s ago");
|
||
expect(formatAge(59)).toBe("59s ago");
|
||
expect(formatAge(60)).toBe("1m ago");
|
||
expect(formatAge(3599)).toBe("59m ago");
|
||
expect(formatAge(3600)).toBe("1h ago");
|
||
expect(formatAge(10800)).toBe("3h ago");
|
||
expect(formatAge(86399)).toBe("23h ago");
|
||
expect(formatAge(86400)).toBe("1d ago");
|
||
expect(formatAge(400000)).toBe("4d ago");
|
||
});
|
||
|
||
test("formatDuration is the same span without the 'ago', and never negative", () => {
|
||
expect(formatDuration(0)).toBe("0s");
|
||
expect(formatDuration(59)).toBe("59s");
|
||
expect(formatDuration(3600)).toBe("1h");
|
||
expect(formatDuration(86400)).toBe("1d");
|
||
// Clock skew between the server's timestamps and the browser's clock.
|
||
expect(formatDuration(-5)).toBe("0s");
|
||
});
|
||
|
||
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");
|
||
});
|