diff --git a/src/format.ts b/src/format.ts index 0115f48..a2d9c35 100644 --- a/src/format.ts +++ b/src/format.ts @@ -1,7 +1,17 @@ -export function formatCurrency(amount: number) { - return `$${amount.toFixed(2)}`; +export function formatCurrency(amount: number, currency = "USD") { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency, + }).format(amount); } export function formatPercent(value: number) { return `${(value * 100).toFixed(1)}%`; } + +export function formatNumber(value: number, decimals = 2) { + return new Intl.NumberFormat("en-US", { + minimumFractionDigits: decimals, + maximumFractionDigits: decimals, + }).format(value); +} diff --git a/src/math.ts b/src/math.ts index a942c9a..0786b9c 100644 --- a/src/math.ts +++ b/src/math.ts @@ -3,13 +3,16 @@ export function add(a: number, b: number) { } export function subtract(a: number, b: number) { - return a + b; // bug: should be a - b + return a - b; } export function multiply(a: number, b: number) { - return a * b + 1; // bug: off by one + return a * b; } export function divide(a: number, b: number) { + if (b === 0) { + throw new Error("division by zero"); + } return a / b; } diff --git a/src/old-module.ts b/src/old-module.ts deleted file mode 100644 index cf92d8f..0000000 --- a/src/old-module.ts +++ /dev/null @@ -1,4 +0,0 @@ -// this module is deprecated and will be removed -export function legacyHelper() { - return "old"; -} diff --git a/src/validate.ts b/src/validate.ts new file mode 100644 index 0000000..a5bfb8a --- /dev/null +++ b/src/validate.ts @@ -0,0 +1,11 @@ +export function isPositive(n: number) { + return n > 0; +} + +export function isInRange(value: number, min: number, max: number) { + return value >= min && value <= max; +} + +export function isInteger(n: number) { + return Number.isInteger(n); +} diff --git a/test/math.test.ts b/test/math.test.ts index 67de508..5815895 100644 --- a/test/math.test.ts +++ b/test/math.test.ts @@ -17,4 +17,8 @@ describe("math", () => { it("divides", () => { expect(divide(10, 2)).toBe(5); }); + + it("throws on division by zero", () => { + expect(() => divide(1, 0)).toThrow("division by zero"); + }); });