diff --git a/kraiken-lib/src/format.ts b/kraiken-lib/src/format.ts index 06d906d..03e7c5e 100644 --- a/kraiken-lib/src/format.ts +++ b/kraiken-lib/src/format.ts @@ -22,7 +22,8 @@ export function compactNumber(value: number): string { /** Format number with commas (e.g. "1,234,567") */ export function commaNumber(value: number): string { - return value ? value.toLocaleString('en-US') : '0'; + if (!Number.isFinite(value)) return '0'; + return value.toLocaleString('en-US'); } /** Format a token amount with comma grouping and 2 decimal places (e.g. "1,234.56") */ diff --git a/kraiken-lib/src/tests/format.test.ts b/kraiken-lib/src/tests/format.test.ts index 4a1e621..3c8df14 100644 --- a/kraiken-lib/src/tests/format.test.ts +++ b/kraiken-lib/src/tests/format.test.ts @@ -95,10 +95,18 @@ describe('compactNumber', () => { }); describe('commaNumber', () => { - test('returns "0" for falsy input', () => { + test('returns "0" for zero', () => { expect(commaNumber(0)).toBe('0'); }); + test('returns "0" for NaN', () => { + expect(commaNumber(NaN)).toBe('0'); + }); + + test('returns "0" for Infinity', () => { + expect(commaNumber(Infinity)).toBe('0'); + }); + test('formats thousands with commas', () => { expect(commaNumber(1234)).toBe('1,234'); });