diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-04-02 19:57:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-02 19:57:44 +0800 |
commit | d95b1e2db499d0264a1020be1ec453c5136b5a3b (patch) | |
tree | b26623424303ff4d5ba17080b53ef40d037a1426 /packages/base-contract/test | |
parent | 695b697cdf6c73bb4b5f920869ce128f9a9e7523 (diff) | |
parent | c1d6c7ff66079731df405e25c4b2aa83c86fffb9 (diff) | |
download | dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar.gz dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar.bz2 dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar.lz dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar.xz dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.tar.zst dexon-sol-tools-d95b1e2db499d0264a1020be1ec453c5136b5a3b.zip |
Merge pull request #485 from 0xProject/feature/metacoin
Add metacoin example project
Diffstat (limited to 'packages/base-contract/test')
-rw-r--r-- | packages/base-contract/test/utils_test.ts | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/packages/base-contract/test/utils_test.ts b/packages/base-contract/test/utils_test.ts new file mode 100644 index 000000000..c083704f4 --- /dev/null +++ b/packages/base-contract/test/utils_test.ts @@ -0,0 +1,108 @@ +import { BigNumber } from '@0xproject/utils'; +import * as chai from 'chai'; +import 'mocha'; + +import { formatABIDataItem } from '../src/utils'; + +const { expect } = chai; + +describe('Utils tests', () => { + describe('#formatABIDataItem', () => { + it('correctly handles arrays', () => { + const calls: Array<{ type: string; value: any }> = []; + const abi = { + name: 'values', + type: 'uint256[]', + }; + const val = [1, 2, 3]; + const formatted = formatABIDataItem(abi, val, (type: string, value: any) => { + calls.push({ type, value }); + return value; // no-op + }); + expect(formatted).to.be.deep.equal(val); + expect(calls).to.be.deep.equal([ + { type: 'uint256', value: 1 }, + { type: 'uint256', value: 2 }, + { type: 'uint256', value: 3 }, + ]); + }); + it('correctly handles tuples', () => { + const calls: Array<{ type: string; value: any }> = []; + const abi = { + components: [ + { + name: 'to', + type: 'address', + }, + { + name: 'amount', + type: 'uint256', + }, + ], + name: 'data', + type: 'tuple', + }; + const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; + const val = { to: ZERO_ADDRESS, amount: new BigNumber(1) }; + const formatted = formatABIDataItem(abi, val, (type: string, value: any) => { + calls.push({ type, value }); + return value; // no-op + }); + expect(formatted).to.be.deep.equal(val); + expect(calls).to.be.deep.equal([ + { + type: 'address', + value: val.to, + }, + { + type: 'uint256', + value: val.amount, + }, + ]); + }); + it('correctly handles nested arrays of tuples', () => { + const calls: Array<{ type: string; value: any }> = []; + const abi = { + components: [ + { + name: 'to', + type: 'address', + }, + { + name: 'amount', + type: 'uint256', + }, + ], + name: 'data', + type: 'tuple[2][]', + }; + const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; + const val = [ + [{ to: ZERO_ADDRESS, amount: new BigNumber(1) }, { to: ZERO_ADDRESS, amount: new BigNumber(2) }], + ]; + const formatted = formatABIDataItem(abi, val, (type: string, value: any) => { + calls.push({ type, value }); + return value; // no-op + }); + expect(formatted).to.be.deep.equal(val); + expect(calls).to.be.deep.equal([ + { + type: 'address', + value: val[0][0].to, + }, + { + type: 'uint256', + value: val[0][0].amount, + }, + { + type: 'address', + value: val[0][1].to, + }, + { + type: 'uint256', + value: val[0][1].amount, + }, + ]); + }); + }); +}); |