Explicit encoding rules in tests.
This commit is contained in:
@@ -10,6 +10,7 @@ chaiSetup.configure();
|
||||
const expect = chai.expect;
|
||||
|
||||
describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const encodingRules: AbiEncoder.EncodingRules = { optimize: true };
|
||||
it('Duplicate Dynamic Arrays with Static Elements', async () => {
|
||||
// Generate calldata
|
||||
const method = new AbiEncoder.Method(OptimizedAbis.duplicateDynamicArraysWithStaticElements);
|
||||
@@ -17,7 +18,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const array2 = array1;
|
||||
const args = [array1, array2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x7221063300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000096';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -32,7 +33,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const array2 = array1;
|
||||
const args = [array1, array2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0xbb4f12e300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -47,7 +48,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const array2 = array1;
|
||||
const args = [array1, array2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x7f8130430000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000096';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -64,7 +65,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const array2 = array1;
|
||||
const args = [array1, array2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x9fe31f8e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -78,7 +79,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const strings = ['Hello', 'World', 'Hello', 'World'];
|
||||
const args = [strings];
|
||||
// Validate calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x13e751a900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -92,7 +93,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple = ['Hello', 'Hello'];
|
||||
const args = [tuple];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x16780a5e000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -109,7 +110,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const method = new AbiEncoder.Method(OptimizedAbis.duplicateStrings);
|
||||
const args = ['Hello', 'Hello'];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x07370bfa00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -127,7 +128,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const value = '0x01020304050607080910111213141516171819202122232425262728293031323334353637383940';
|
||||
const args = [value, value];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x6045e42900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002801020304050607080910111213141516171819202122232425262728293031323334353637383940000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -142,7 +143,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple2 = tuple1;
|
||||
const args = [tuple1, tuple2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x564f826d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000006792a000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20576f726c642100000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -158,7 +159,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple2 = [tuple1[0], new BigNumber(2)];
|
||||
const args = [tuple1, tuple2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x564f826d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20576f726c642100000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -174,7 +175,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple2 = [array, 'extra argument to prevent exactly matching the tuples'];
|
||||
const args = [tuple1, tuple2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x18970a9e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000035657874726120617267756d656e7420746f2070726576656e742065786163746c79206d61746368696e6720746865207475706c65730000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -190,7 +191,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple2 = [nestedTuple, 'extra argument to prevent exactly matching the tuples'];
|
||||
const args = [tuple1, tuple2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x0b4d2e6a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20576f726c6421000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035657874726120617267756d656e7420746f2070726576656e742065786163746c79206d61746368696e6720746865207475706c65730000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -220,7 +221,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const twoDimArray2 = [['Hello', 'World'], ['Bar']];
|
||||
const args = [twoDimArray1, twoDimArray2];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x0d28c4f900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003466f6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000034261720000000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -235,7 +236,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const tuple = [[array[0]], [array[1]], [array[2]], [array[3]]];
|
||||
const args = [array, tuple];
|
||||
// Validata calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0x5b5c78fd0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000e1';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
@@ -250,7 +251,7 @@ describe('ABI Encoder: Optimized Method Encoding/Decoding', () => {
|
||||
const str = 'Hello';
|
||||
const args = [array, str];
|
||||
// Validate calldata
|
||||
const optimizedCalldata = method.encode(args, { optimize: true });
|
||||
const optimizedCalldata = method.encode(args, encodingRules);
|
||||
const expectedOptimizedCalldata =
|
||||
'0xe0e0d34900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000';
|
||||
expect(optimizedCalldata).to.be.equal(expectedOptimizedCalldata);
|
||||
|
Reference in New Issue
Block a user