diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index e63f6b997d..bd5f882d2e 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -5,6 +5,10 @@ { "note": "Add new assertions: `isArray`, `isBlockParam` and `isNumberOrBigNumber`", "pr": 1823 + }, + { + "note": "Add `isNumberLike()` assertion", + "pr": 1819 } ], "timestamp": 1563006338 diff --git a/packages/assert/src/index.ts b/packages/assert/src/index.ts index 43be5772a2..d99902e297 100644 --- a/packages/assert/src/index.ts +++ b/packages/assert/src/index.ts @@ -10,6 +10,11 @@ export const assert = { const isBigNumber = BigNumber.isBigNumber(value); assert.assert(isBigNumber, assert.typeAssertionMessage(variableName, 'BigNumber', value)); }, + isNumberLike(variableName: string, value: BigNumber | number): void { + const isBigNumber = BigNumber.isBigNumber(value); + const isNumber = typeof value === 'number'; + assert.assert(isBigNumber || isNumber, assert.typeAssertionMessage(variableName, 'BigNumber | number', value)); + }, isValidBaseUnitAmount(variableName: string, value: BigNumber): void { assert.isBigNumber(variableName, value); const isNegative = value.isLessThan(0); diff --git a/packages/assert/test/assert_test.ts b/packages/assert/test/assert_test.ts index 9266496ac0..346677b2dd 100644 --- a/packages/assert/test/assert_test.ts +++ b/packages/assert/test/assert_test.ts @@ -23,6 +23,16 @@ describe('Assertions', () => { invalidInputs.forEach(input => expect(assert.isBigNumber.bind(assert, variableName, input)).to.throw()); }); }); + describe('#isNumberLike', () => { + it('should not throw for valid input', () => { + const validInputs = [new BigNumber(23), 23]; + validInputs.forEach(input => expect(assert.isNumberLike.bind(assert, variableName, input)).to.not.throw()); + }); + it('should throw for invalid input', () => { + const invalidInputs = ['test', false, { random: 'test' }, undefined]; + invalidInputs.forEach(input => expect(assert.isNumberLike.bind(assert, variableName, input)).to.throw()); + }); + }); describe('#isValidBaseUnitAmount', () => { it('should not throw for valid input', () => { const validInputs = [new BigNumber(23), new BigNumber('45000000')];