Files
WRNexusJS/packages/i18n/test/format.test.ts
2026-07-12 15:55:18 +05:30

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