// 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), '壹亿零壹万元整') }) })