36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import { test, expect } from "bun:test";
|
|
import {
|
|
formatNumber,
|
|
formatCurrency,
|
|
formatDate,
|
|
formatRelativeTime,
|
|
plural,
|
|
} from "../src/index.ts";
|
|
|
|
test("formatNumber is locale-aware", () => {
|
|
expect(formatNumber(1234.5, "en-US")).toBe("1,234.5");
|
|
expect(formatNumber(1234.5, "de-DE")).toBe("1.234,5");
|
|
});
|
|
|
|
test("formatCurrency", () => {
|
|
expect(formatCurrency(9.99, "USD", "en-US")).toBe("$9.99");
|
|
});
|
|
|
|
test("formatDate", () => {
|
|
const out = formatDate("2026-01-15T00:00:00Z", "en-US", { dateStyle: "medium", timeZone: "UTC" });
|
|
expect(out).toContain("2026");
|
|
expect(out).toContain("Jan");
|
|
});
|
|
|
|
test("formatRelativeTime", () => {
|
|
expect(formatRelativeTime(-1, "day", "en-US")).toBe("yesterday");
|
|
expect(formatRelativeTime(3, "hour", "en-US")).toBe("in 3 hours");
|
|
});
|
|
|
|
test("plural picks the CLDR form and fills #", () => {
|
|
const forms = { one: "# item", other: "# items" };
|
|
expect(plural(1, forms, "en")).toBe("1 item");
|
|
expect(plural(5, forms, "en")).toBe("5 items");
|
|
expect(plural(0, forms, "en")).toBe("0 items");
|
|
});
|