aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Hysen <greg.hysen@gmail.com>2018-11-20 02:44:17 +0800
committerGreg Hysen <greg.hysen@gmail.com>2018-11-29 08:38:10 +0800
commitbc538c71fcab68578a82b08b4467240f8e79b96b (patch)
tree5fd838876f3164f0adf232d364d8b5e8e5feb248
parent880540f4b8fd8dd7a7f1a93cf7fbcdc17e1fbb13 (diff)
downloaddexon-0x-contracts-bc538c71fcab68578a82b08b4467240f8e79b96b.tar.gz
dexon-0x-contracts-bc538c71fcab68578a82b08b4467240f8e79b96b.tar.zst
dexon-0x-contracts-bc538c71fcab68578a82b08b4467240f8e79b96b.zip
Tests - Encode/Decode Array
-rw-r--r--packages/utils/src/abi_encoder/data_type.ts4
-rw-r--r--packages/utils/test/abi_encoder_test.ts68
2 files changed, 46 insertions, 26 deletions
diff --git a/packages/utils/src/abi_encoder/data_type.ts b/packages/utils/src/abi_encoder/data_type.ts
index 15de12a2f..022f5621f 100644
--- a/packages/utils/src/abi_encoder/data_type.ts
+++ b/packages/utils/src/abi_encoder/data_type.ts
@@ -41,8 +41,7 @@ export abstract class DataType {
}
public decode(calldata: string, rules?: DecodingRules): any {
- const rawCalldata = new RawCalldata(calldata, false);
- console.log(`HERE DUDE ${JSON.stringify(rawCalldata)}`);
+ const rawCalldata = new RawCalldata(calldata, false); // @TODO Sohuld not hardcode false here
const rules_ = rules ? rules : DataType.DEFAULT_DECODING_RULES;
const value = this.generateValue(rawCalldata, rules_);
return value;
@@ -278,7 +277,6 @@ export abstract class MemberDataType extends DataType {
value = [];
_.each(members, (member: DataType, idx: number) => {
let memberValue = member.generateValue(calldata, rules);
- console.log(`MEMBER VALUE: ${memberValue}`);
(value as any[]).push(memberValue);
});
}
diff --git a/packages/utils/test/abi_encoder_test.ts b/packages/utils/test/abi_encoder_test.ts
index d2d7b9825..bf6250713 100644
--- a/packages/utils/test/abi_encoder_test.ts
+++ b/packages/utils/test/abi_encoder_test.ts
@@ -725,7 +725,7 @@ describe.only('ABI Encoder', () => {
});
describe.only('Array', () => {
- it.only('sample', async () => {
+ it.only('Fixed size; Static elements', async () => {
// Create DataType object
const testDataItem = { name: 'testArray', type: 'int[2]' };
const dataType = new AbiEncoder.SolArray(testDataItem);
@@ -742,34 +742,56 @@ describe.only('ABI Encoder', () => {
expect(decodedArgsAsJson).to.be.equal(argsAsJson);
});
- /*
- it('sample undefined size', async () => {
+ it.only('Dynamic size; Static elements', async () => {
+ // Create DataType object
const testDataItem = { name: 'testArray', type: 'int[]' };
const dataType = new AbiEncoder.SolArray(testDataItem);
- console.log(JSON.stringify(dataType, null, 4));
- console.log('*'.repeat(60));
- dataType.assignValue([new BigNumber(5), new BigNumber(6)]);
- console.log(JSON.stringify(dataType, null, 4));
- const hexValue = dataType.getHexValue();
- console.log('*'.repeat(60));
- console.log(hexValue);
+ // Construct args to be encoded
+ const args = [new BigNumber(5), new BigNumber(6)];
+ // Encode Args and validate result
+ const encodedArgs = dataType.encode(args);
+ const expectedEncodedArgs = '0x000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006';
+ expect(encodedArgs).to.be.equal(expectedEncodedArgs);
+ // Decode Encoded Args and validate result
+ const decodedArgs = dataType.decode(encodedArgs);
+ const decodedArgsAsJson = JSON.stringify(decodedArgs);
+ const argsAsJson = JSON.stringify(args);
+ expect(decodedArgsAsJson).to.be.equal(argsAsJson);
});
- it('sample dynamic types', async () => {
+ it.only('Fixed size; Dynamic elements', async () => {
+ // Create DataType object
+ const testDataItem = { name: 'testArray', type: 'string[2]' };
+ const dataType = new AbiEncoder.SolArray(testDataItem);
+ // Construct args to be encoded
+ const args = ["Hello", "world"];
+ // Encode Args and validate result
+ const encodedArgs = dataType.encode(args);
+ const expectedEncodedArgs = '0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c64000000000000000000000000000000000000000000000000000000';
+ expect(encodedArgs).to.be.equal(expectedEncodedArgs);
+ // Decode Encoded Args and validate result
+ const decodedArgs = dataType.decode(encodedArgs);
+ const decodedArgsAsJson = JSON.stringify(decodedArgs);
+ const argsAsJson = JSON.stringify(args);
+ expect(decodedArgsAsJson).to.be.equal(argsAsJson);
+ });
+
+ it.only('Dynamic size; Dynamic elements', async () => {
+ // Create DataType object
const testDataItem = { name: 'testArray', type: 'string[]' };
const dataType = new AbiEncoder.SolArray(testDataItem);
- console.log(JSON.stringify(dataType, null, 4));
- console.log('*'.repeat(60));
- dataType.assignValue(['five', 'six', 'seven']);
- console.log(JSON.stringify(dataType, null, 4));
- const hexValue = dataType.getHexValue();
- console.log('*'.repeat(60));
- console.log(hexValue);
- const calldata = new AbiEncoder.Calldata('0x01020304', 1);
- dataType.bind(calldata, AbiEncoder.CalldataSection.PARAMS);
- console.log('*'.repeat(60));
- console.log(calldata.getHexValue());
- });*/
+ // Construct args to be encoded
+ const args = ["Hello", "world"];
+ // Encode Args and validate result
+ const encodedArgs = dataType.encode(args);
+ const expectedEncodedArgs = '0x000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c64000000000000000000000000000000000000000000000000000000';
+ expect(encodedArgs).to.be.equal(expectedEncodedArgs);
+ // Decode Encoded Args and validate result
+ const decodedArgs = dataType.decode(encodedArgs);
+ const decodedArgsAsJson = JSON.stringify(decodedArgs);
+ const argsAsJson = JSON.stringify(args);
+ expect(decodedArgsAsJson).to.be.equal(argsAsJson);
+ });
});
/*