itns-sidechain/test/utils-test.js
2018-08-01 20:34:21 -07:00

58 lines
1.8 KiB
JavaScript

/* eslint-env mocha */
/* eslint prefer-arrow-callback: "off" */
'use strict';
const assert = require('./util/assert');
const Amount = require('../lib/ui/amount');
const fixed = require('../lib/utils/fixed');
const {COIN} = require('../lib/protocol/consensus');
describe('Utils', function() {
it('should convert dollarydoos to hns', () => {
assert.strictEqual(Amount.coin(5460), '0.00546');
assert.strictEqual(Amount.coin(54678 * 1000000), '54678.0');
assert.strictEqual(Amount.coin(5460 * 10000000), '54600.0');
});
it('should convert hns to dollarydoos', () => {
assert.strictEqual(Amount.value('0.00546'), 5460);
assert.strictEqual(Amount.value('54678'), 54678 * 1000000);
assert.strictEqual(Amount.value('54600'), 5460 * 10000000);
assert.strictEqual(Amount.value('54600'), 5460 * 10000000);
assert.strictEqual(Amount.value('54600.00'), 5460 * 10000000);
assert.doesNotThrow(() => {
Amount.value('546.000000');
});
assert.throws(() => {
Amount.value('546.0000001');
});
assert.doesNotThrow(() => {
Amount.value('9007199254.740991');
});
assert.doesNotThrow(() => {
Amount.value('09007199254.7409910');
});
assert.throws(() => {
Amount.value('9007199254.740992');
});
assert.throws(() => {
Amount.value('19007199254.740991');
});
assert.strictEqual(0.15645647 * COIN, 156456.46999999997);
assert.strictEqual(parseFloat('0.15645647') * COIN, 156456.46999999997);
assert.strictEqual(15645647 / COIN, 15.645647);
assert.strictEqual(fixed.decode('0.15645647', 8), 15645647);
assert.strictEqual(fixed.encode(15645647, 8), '0.15645647');
assert.strictEqual(fixed.fromFloat(0.15645647, 8), 15645647);
assert.strictEqual(fixed.toFloat(15645647, 8), 0.15645647);
});
});