import { assert } from 'chai' import { ValidationError, percentToTransferRate, decimalToTransferRate, transferRateToDecimal, } from '../../src' describe('TransferRate utils', function () { it('converts 1 percent to valid TransferRate', function () { const billionths = percentToTransferRate('1%') assert.equal(billionths, 1010000000) }) it('converts .01 percent to valid TransferRate', function () { assert.equal(decimalToTransferRate('.01'), 1010000000) assert.equal(transferRateToDecimal(1010000000), '0.01') }) it('Throws when TransferRate < 0%', function () { assert.throws( () => percentToTransferRate('-1%'), ValidationError, 'Decimal value must be between 0 and 1.00.', ) }) it('Throws when TransferRate < 0', function () { assert.throws( () => decimalToTransferRate('-.01'), ValidationError, 'Decimal value must be between 0 and 1.00.', ) }) it('Throws when TransferRate >100%', function () { assert.throws( () => percentToTransferRate('101%'), ValidationError, 'Decimal value must be between 0 and 1.00.', ) }) it('Throws when TransferRate >1.00', function () { assert.throws( () => decimalToTransferRate('1.01'), ValidationError, 'Decimal value must be between 0 and 1.00.', ) }) it('percentToTransferRate greater than maximum precision', function () { assert.throws( () => percentToTransferRate('.0000000000000011221%'), ValidationError, 'Decimal exceeds maximum precision.', ) }) it('decimalToTransferRate greater than maximum precision', function () { assert.throws( () => decimalToTransferRate('.000000000000000011221'), ValidationError, 'Decimal exceeds maximum precision.', ) }) it('converts 0 percent to valid 0', function () { const billionths = percentToTransferRate('0%') assert.equal(billionths, 0) }) it('converts 0 to valid 0', function () { assert.equal(decimalToTransferRate('0'), 0) assert.equal(transferRateToDecimal(0), '0') }) })