21 lines
1.4 KiB
JavaScript
21 lines
1.4 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
let money;
|
|
try {money=await import('../money.js');} catch {}
|
|
assert.ok(money,'Exact currency helpers must exist');
|
|
const {normalizeAmount,sumMoney,balanceAfter,formatMoney}=money;
|
|
assert.equal(normalizeAmount('00019.9','USD'),'19.90');
|
|
assert.equal(normalizeAmount('1000.00','JPY'),'1000');
|
|
assert.equal(normalizeAmount('1.234','KWD'),'1.234');
|
|
for(const [amount,currency] of [['1.001','USD'],['1.1','JPY'],['-1','USD'],['1e3','USD'],['NaN','USD'],['1000000000','USD'],['1','ZZZ']]) {
|
|
assert.throws(()=>normalizeAmount(amount,currency));
|
|
}
|
|
assert.deepEqual(sumMoney([{currency:'USD',amount:'0.10'},{currency:'USD',amount:'0.20'},{currency:'JPY',amount:'1000'}]),[{currency:'JPY',amount:'1000'},{currency:'USD',amount:'0.30'}]);
|
|
assert.equal(balanceAfter([{currency:'USD',amount:'0.30'}],{currency:'USD',amount:'0.10'},'deduct').amount,'0.20');
|
|
assert.throws(()=>balanceAfter([],{currency:'USD',amount:'0.10'},'deduct'));
|
|
assert.throws(()=>balanceAfter([{currency:'USD',amount:'0.30'}],{currency:'USD',amount:'0.31'},'deduct'));
|
|
assert.equal(balanceAfter([],{currency:'HKD',amount:'5.50'},'credit').amount,'5.50');
|
|
assert.equal(formatMoney({currency:'USD',amount:'1250.50'}),'USD 1,250.50');
|
|
assert.equal(formatMoney({currency:'JPY',amount:'1000'}),'JPY 1,000');
|
|
assert.equal(formatMoney(null),'未填写');
|
|
console.log('Money: 18 checks passed');
|