You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.0 KiB
34 lines
1.0 KiB
import {
|
|
addMoney,
|
|
compareMoney,
|
|
formatMoney,
|
|
isValidMoneyInput,
|
|
moneyEquals,
|
|
normalizeMoney,
|
|
subtractMoney,
|
|
sumMoney
|
|
} from '@/utils/budgetMoney'
|
|
|
|
describe('budget money', () => {
|
|
it('normalizes and displays four decimals', () => {
|
|
expect(normalizeMoney('12.34')).toBe('12.3400')
|
|
expect(formatMoney('0.0001')).toBe('0.0001')
|
|
expect(formatMoney(null)).toBe('0.0000')
|
|
})
|
|
|
|
it('calculates without binary floating point drift', () => {
|
|
expect(addMoney('0.1000', '0.2000')).toBe('0.3000')
|
|
expect(subtractMoney('1.0000', '0.9999')).toBe('0.0001')
|
|
expect(sumMoney(['9999999999.9999', '0.0002'])).toBe('10000000000.0001')
|
|
expect(moneyEquals('12.34', '12.3400')).toBe(true)
|
|
expect(compareMoney('1.0000', '0.9999')).toBe(1)
|
|
})
|
|
|
|
it('rejects over-precision and out-of-range input', () => {
|
|
expect(isValidMoneyInput('1.00001')).toBe(false)
|
|
expect(isValidMoneyInput('100000000000.0000')).toBe(false)
|
|
expect(isValidMoneyInput('1e3')).toBe(false)
|
|
expect(() => normalizeMoney('1.00001')).toThrow()
|
|
})
|
|
})
|