Files
zkxw/web-admin/src/utils/rmb-upper.test.ts
T
zlwuandCursor 0a24f707bf fix(web-admin): avoid duplicate 零 in RMB uppercase for yi+rest
Add regression tests for 亿到元段间零填充。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 11:01:33 +08:00

44 lines
1.5 KiB
TypeScript

// web-admin/src/utils/rmb-upper.test.ts
import { describe, it } from 'node:test'
import assert from 'node:assert/strict'
import { toRmbUpper } from './rmb-upper'
describe('toRmbUpper', () => {
it('zero', () => {
assert.equal(toRmbUpper(0), '零元整')
})
it('integer', () => {
assert.equal(toRmbUpper(1), '壹元整')
assert.equal(toRmbUpper(10), '壹拾元整')
assert.equal(toRmbUpper(100), '壹佰元整')
assert.equal(toRmbUpper(1234), '壹仟贰佰叁拾肆元整')
})
it('jiao fen', () => {
assert.equal(toRmbUpper(1.23), '壹元贰角叁分')
assert.equal(toRmbUpper(0.5), '伍角')
assert.equal(toRmbUpper(0.05), '伍分')
assert.equal(toRmbUpper(1.2), '壹元贰角')
assert.equal(toRmbUpper(1.03), '壹元零叁分')
})
it('nullish and invalid', () => {
assert.equal(toRmbUpper(null), '')
assert.equal(toRmbUpper(undefined), '')
assert.equal(toRmbUpper(Number.NaN), '')
assert.equal(toRmbUpper(-1), '')
})
it('too large', () => {
assert.equal(toRmbUpper(1e12), '金额过大')
})
it('near max has yuan jiao fen', () => {
const s = toRmbUpper(999999999999.99)
assert.ok(s.includes('元'))
assert.ok(s.includes('角') || s.includes('分'))
assert.notEqual(s, '金额过大')
})
it('yi to yuan zero padding', () => {
assert.equal(toRmbUpper(100000001), '壹亿零壹元整')
assert.equal(toRmbUpper(100000010), '壹亿零壹拾元整')
assert.equal(toRmbUpper(100010000), '壹亿零壹万元整')
})
})