Assert on non-integer inputs (#411)

* Assert on non-integer inputs

* Return input value in assert

* alphabetical

* assert after 0 return

* Lint issues (after on-GH fix)
This commit is contained in:
Jaco Greeff
2019-05-27 12:25:22 +02:00
committed by GitHub
parent 30a93b1279
commit 9d4c36de92
2 changed files with 10 additions and 1 deletions
@@ -9,6 +9,12 @@ import formatBalance from './formatBalance';
describe('formatBalance', () => {
const TESTVAL = new BN('123456789000');
it('does not allow float inputs', () => {
expect(
() => formatBalance(0.01234)
).toThrow(/integer input value/);
});
it('formats empty to 0', () => {
expect(formatBalance()).toEqual('0');
expect(formatBalance('0')).toEqual('0');
+4 -1
View File
@@ -4,9 +4,10 @@
import BN from 'bn.js';
import assert from '../assert';
import isUndefined from '../is/undefined';
import { SI, SI_MID, SiDef, calcSi, findSi } from './si';
import formatDecimal from './formatDecimal';
import { SI, SI_MID, SiDef, calcSi, findSi } from './si';
type Defaults = {
decimals: number,
@@ -36,6 +37,8 @@ function _formatBalance (input?: number | string | BN, withSi: boolean = true, d
return '0';
}
assert(/^\d+$/.test(text), `Non-integer input value '${text}' supplied to balanceFormat`);
// NOTE We start at midpoint (8) minus 1 - this means that values display as
// 123.456 instead of 0.123k (so always 6 relevant). Additionally we us ceil
// so there are at most 3 decimal before the decimal seperator