Add isNumberOrBigNumber assertion

This commit is contained in:
Fabio Berger 2019-05-20 13:59:38 +01:00
parent 985696631c
commit c58306cd49
3 changed files with 14 additions and 5 deletions

View File

@ -16,7 +16,7 @@ export const utils = {
const solTypeRegexToTsType = [ const solTypeRegexToTsType = [
{ {
regex: '^u?int(8|16|32)?$', regex: '^u?int(8|16|32)?$',
assertion: '', // TODO(fabio): Create a combined assertion for `number|bigNumber`? assertion: `assert.isNumberOrBigNumber('${solName}', ${solName});`,
}, },
{ regex: '^string$', assertion: `assert.isString('${solName}', ${solName});` }, { regex: '^string$', assertion: `assert.isString('${solName}', ${solName});` },
{ regex: '^address$', assertion: `assert.isString('${solName}', ${solName});` }, { regex: '^address$', assertion: `assert.isString('${solName}', ${solName});` },
@ -32,9 +32,8 @@ export const utils = {
} }
const TUPLE_TYPE_REGEX = '^tuple$'; const TUPLE_TYPE_REGEX = '^tuple$';
if (solType.match(TUPLE_TYPE_REGEX)) { if (solType.match(TUPLE_TYPE_REGEX)) {
// Omit assertions for complex types for now // NOTE(fabio): Omit assertions for complex types since this would require schema assertions
// TODO(fabio): Figure out an elegant way to map complex types to JSON-schemas and // and we currently do not want to make @0x/abi-gen a 0x-specific tool.
// add a schema assertion for that type here.
const assertion = ''; const assertion = '';
return assertion; return assertion;
} }

View File

@ -3,7 +3,7 @@
"version": "2.1.0", "version": "2.1.0",
"changes": [ "changes": [
{ {
"note": "Add new assertions: `isArray`, `isBlockParam`", "note": "Add new assertions: `isArray`, `isBlockParam` and `isNumberOrBigNumber`",
"pr": 1823 "pr": 1823
} }
] ]

View File

@ -56,6 +56,16 @@ export const assert = {
isNumber(variableName: string, value: number): void { isNumber(variableName: string, value: number): void {
assert.assert(_.isFinite(value), assert.typeAssertionMessage(variableName, 'number', value)); assert.assert(_.isFinite(value), assert.typeAssertionMessage(variableName, 'number', value));
}, },
isNumberOrBigNumber(variableName: string, value: number): void {
if (_.isFinite(value)) {
return;
} else {
assert.assert(
BigNumber.isBigNumber(value),
assert.typeAssertionMessage(variableName, 'number or BigNumber', value),
);
}
},
isBoolean(variableName: string, value: boolean): void { isBoolean(variableName: string, value: boolean): void {
assert.assert(_.isBoolean(value), assert.typeAssertionMessage(variableName, 'boolean', value)); assert.assert(_.isBoolean(value), assert.typeAssertionMessage(variableName, 'boolean', value));
}, },