diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-11-23 16:20:24 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-23 16:20:24 -0800 |
commit | 32bf8122e8c8a0fbadd53b8a015cfbc9014519a2 (patch) | |
tree | 55bd24596e6fadadbf4326b26e3d14e418c5c7bb /src/view/com/util/numeric/__tests__/format-test.ts | |
parent | 523d1f01a51c0e85e49916fb42b204f7004ffac1 (diff) | |
parent | b4d07c4112b9a62b5380948051aa4a7fd391a2d4 (diff) | |
download | voidsky-32bf8122e8c8a0fbadd53b8a015cfbc9014519a2.tar.zst |
Merge branch 'main' into main
Diffstat (limited to 'src/view/com/util/numeric/__tests__/format-test.ts')
-rw-r--r-- | src/view/com/util/numeric/__tests__/format-test.ts | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/view/com/util/numeric/__tests__/format-test.ts b/src/view/com/util/numeric/__tests__/format-test.ts new file mode 100644 index 000000000..74df4be4c --- /dev/null +++ b/src/view/com/util/numeric/__tests__/format-test.ts @@ -0,0 +1,92 @@ +import {describe, expect, it} from '@jest/globals' + +import {APP_LANGUAGES} from '#/locale/languages' +import {formatCount} from '../format' + +const formatCountRound = (locale: string, num: number) => { + const options: Intl.NumberFormatOptions = { + notation: 'compact', + maximumFractionDigits: 1, + } + return new Intl.NumberFormat(locale, options).format(num) +} + +const formatCountTrunc = (locale: string, num: number) => { + const options: Intl.NumberFormatOptions = { + notation: 'compact', + maximumFractionDigits: 1, + // @ts-ignore + roundingMode: 'trunc', + } + return new Intl.NumberFormat(locale, options).format(num) +} + +// prettier-ignore +const testNums = [ + 1, + 5, + 9, + 11, + 55, + 99, + 111, + 555, + 999, + 1111, + 5555, + 9999, + 11111, + 55555, + 99999, + 111111, + 555555, + 999999, + 1111111, + 5555555, + 9999999, + 11111111, + 55555555, + 99999999, + 111111111, + 555555555, + 999999999, + 1111111111, + 5555555555, + 9999999999, + 11111111111, + 55555555555, + 99999999999, + 111111111111, + 555555555555, + 999999999999, + 1111111111111, + 5555555555555, + 9999999999999, + 11111111111111, + 55555555555555, + 99999999999999, + 111111111111111, + 555555555555555, + 999999999999999, + 1111111111111111, + 5555555555555555, +] + +describe('formatCount', () => { + for (const appLanguage of APP_LANGUAGES) { + const locale = appLanguage.code2 + it('truncates for ' + locale, () => { + const mockI8nn = { + locale, + number(num: number) { + return formatCountRound(locale, num) + }, + } + for (const num of testNums) { + const formatManual = formatCount(mockI8nn as any, num) + const formatOriginal = formatCountTrunc(locale, num) + expect(formatManual).toEqual(formatOriginal) + } + }) + } +}) |