Files
xahau.js/test/utils/dropsToXrp.ts
Jackson Mills da9feffada Remove deprecated functions from api.ts (aka client.ts) (#1534)
* Removed deprecated functions from client.ts

* Renamed files to be camelCase

* Created top-level utils folder and tied all sub-references to it

* Grouped tests for those utils into their own section

Co-authored-by: Nathan Nichols <natenichols@cox.net>
2021-10-04 14:10:09 -04:00

124 lines
3.6 KiB
TypeScript

import assert from 'assert-diff'
import BigNumber from 'bignumber.js'
import {dropsToXrp} from '../../src/utils'
describe('Drops To XRP', function () {
it('works with a typical amount', () => {
const xrp = dropsToXrp('2000000')
assert.strictEqual(xrp, '2', '2 million drops equals 2 XRP')
})
it('works with fractions', () => {
let xrp = dropsToXrp('3456789')
assert.strictEqual(xrp, '3.456789', '3,456,789 drops equals 3.456789 XRP')
xrp = dropsToXrp('3400000')
assert.strictEqual(xrp, '3.4', '3,400,000 drops equals 3.4 XRP')
xrp = dropsToXrp('1')
assert.strictEqual(xrp, '0.000001', '1 drop equals 0.000001 XRP')
xrp = dropsToXrp('1.0')
assert.strictEqual(xrp, '0.000001', '1.0 drops equals 0.000001 XRP')
xrp = dropsToXrp('1.00')
assert.strictEqual(xrp, '0.000001', '1.00 drops equals 0.000001 XRP')
})
it('works with zero', () => {
let xrp = dropsToXrp('0')
assert.strictEqual(xrp, '0', '0 drops equals 0 XRP')
// negative zero is equivalent to zero
xrp = dropsToXrp('-0')
assert.strictEqual(xrp, '0', '-0 drops equals 0 XRP')
xrp = dropsToXrp('0.00')
assert.strictEqual(xrp, '0', '0.00 drops equals 0 XRP')
xrp = dropsToXrp('000000000')
assert.strictEqual(xrp, '0', '000000000 drops equals 0 XRP')
})
it('works with a negative value', () => {
const xrp = dropsToXrp('-2000000')
assert.strictEqual(xrp, '-2', '-2 million drops equals -2 XRP')
})
it('works with a value ending with a decimal point', () => {
let xrp = dropsToXrp('2000000.')
assert.strictEqual(xrp, '2', '2000000. drops equals 2 XRP')
xrp = dropsToXrp('-2000000.')
assert.strictEqual(xrp, '-2', '-2000000. drops equals -2 XRP')
})
it('works with BigNumber objects', () => {
let xrp = dropsToXrp(new BigNumber(2000000))
assert.strictEqual(xrp, '2', '(BigNumber) 2 million drops equals 2 XRP')
xrp = dropsToXrp(new BigNumber(-2000000))
assert.strictEqual(xrp, '-2', '(BigNumber) -2 million drops equals -2 XRP')
xrp = dropsToXrp(new BigNumber(2345678))
assert.strictEqual(
xrp,
'2.345678',
'(BigNumber) 2,345,678 drops equals 2.345678 XRP'
)
xrp = dropsToXrp(new BigNumber(-2345678))
assert.strictEqual(
xrp,
'-2.345678',
'(BigNumber) -2,345,678 drops equals -2.345678 XRP'
)
})
it('works with a number', () => {
// This is not recommended. Use strings or BigNumber objects to avoid precision errors.
let xrp = dropsToXrp(2000000)
assert.strictEqual(xrp, '2', '(number) 2 million drops equals 2 XRP')
xrp = dropsToXrp(-2000000)
assert.strictEqual(xrp, '-2', '(number) -2 million drops equals -2 XRP')
})
it('throws with an amount with too many decimal places', () => {
assert.throws(() => {
dropsToXrp('1.2')
}, /has too many decimal places/)
assert.throws(() => {
dropsToXrp('0.10')
}, /has too many decimal places/)
})
it('throws with an invalid value', () => {
assert.throws(() => {
dropsToXrp('FOO')
}, /invalid value/)
assert.throws(() => {
dropsToXrp('1e-7')
}, /invalid value/)
assert.throws(() => {
dropsToXrp('2,0')
}, /invalid value/)
assert.throws(() => {
dropsToXrp('.')
}, /dropsToXrp: invalid value '\.', should be a BigNumber or string-encoded number\./)
})
it('throws with an amount more than one decimal point', () => {
assert.throws(() => {
dropsToXrp('1.0.0')
}, /dropsToXrp: invalid value '1\.0\.0'/)
assert.throws(() => {
dropsToXrp('...')
}, /dropsToXrp: invalid value '\.\.\.'/)
})
})