aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder/evm_data_types.ts
diff options
context:
space:
mode:
authorGreg Hysen <greg.hysen@gmail.com>2018-11-20 03:18:34 +0800
committerGreg Hysen <greg.hysen@gmail.com>2018-11-29 08:38:10 +0800
commita2ad15be0dc500fa196021a5b32e80af8500043c (patch)
tree3f7dcd493c3a92e39b8583f67c6b79a02f579ce2 /packages/utils/src/abi_encoder/evm_data_types.ts
parenta630312074758b31951c194533dcae596424592d (diff)
downloaddexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.gz
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.bz2
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.lz
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.xz
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.zst
dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.zip
Tests for Address
Diffstat (limited to 'packages/utils/src/abi_encoder/evm_data_types.ts')
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types.ts13
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/utils/src/abi_encoder/evm_data_types.ts b/packages/utils/src/abi_encoder/evm_data_types.ts
index bfb2808da..1ee95863b 100644
--- a/packages/utils/src/abi_encoder/evm_data_types.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types.ts
@@ -20,6 +20,8 @@ export interface DataTypeStaticInterface {
export class Address extends PayloadDataType {
private static SIZE_KNOWN_AT_COMPILE_TIME: boolean = true;
+ public static ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X = "Address must start with '0x'";
+ public static ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES = "Address must be 20 bytes";
constructor(dataItem: DataItem) {
super(dataItem, EvmDataTypeFactory.getInstance(), Address.SIZE_KNOWN_AT_COMPILE_TIME);
@@ -36,9 +38,16 @@ export class Address extends PayloadDataType {
return type === 'address';
}
- public encodeValue(value: boolean): Buffer {
+ public encodeValue(value: string): Buffer {
+ if (value.startsWith('0x') === false) {
+ throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X);
+ }
+ const valueAsBuffer = ethUtil.toBuffer(value);
+ if (valueAsBuffer.byteLength !== 20) {
+ throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES);
+ }
const evmWordWidth = 32;
- const encodedValueBuf = ethUtil.setLengthLeft(ethUtil.toBuffer(value), evmWordWidth);
+ const encodedValueBuf = ethUtil.setLengthLeft(valueAsBuffer, evmWordWidth);
return encodedValueBuf;
}