mirror of
https://github.com/embarklabs/web3.js.git
synced 2026-08-30 22:21:10 +00:00
* wip adding new decoder * improved web3.js readme * reworked decodeParameters * bumped ethers version * fixed tests * fixed decode Log tests * fixed decoding tests * fixed encoding tests * removed old encoder/decoder * fixed all tests * updated ether-js * struct encoding and decoding * decoding index params separate * improved log decoding for indexed paramaters * removed lock files * fixed tests * fixed test * add components to contract * Added some struct tests * Finished decodeParameters testing * Finished encodeParameter and encodeParameters tests * fixed ABICoder decodeParameters * fixed ABICoder decodeParameters * removed console.log * removed out commented code * console.log removed * decodeParameter in ABICoder fixed * codestyle improvement * new version of ethersjs abiCoder implemented and tested * testcases added for structs * package-lock removed * encodeParameters extended for simplified format * codestyle improvement * simplified types added to decodeParameters * types mapping fixed * Started with updating of the documentation for encoding and decoding of parameters * new abi lib tested and documentation updated * decodeParameter/s tested and documentation updated * package-locks fixed * web3-eth-abi package version fixed * gitignore updated * web3.js removed * modified package.lock * documentation updated
109 lines
3.9 KiB
JavaScript
109 lines
3.9 KiB
JavaScript
var chai = require('chai');
|
|
var assert = chai.assert;
|
|
var Eth = require('../packages/web3-eth');
|
|
var sha3 = require('../packages/web3-utils').sha3;
|
|
var FakeIpcProvider = require('./helpers/FakeIpcProvider');
|
|
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
|
|
var Promise = require('bluebird');
|
|
|
|
var abi = [
|
|
{
|
|
constant: true,
|
|
inputs: [
|
|
{
|
|
name: "a",
|
|
type: "bytes32"
|
|
},
|
|
{
|
|
name: "b",
|
|
type: "bytes32"
|
|
}
|
|
],
|
|
name: "takesTwoBytes32",
|
|
outputs: [
|
|
{
|
|
name: "",
|
|
type: "bytes32"
|
|
}
|
|
],
|
|
payable: false,
|
|
type: "function",
|
|
stateMutability: "view"
|
|
}
|
|
];
|
|
|
|
describe('contract', function () {
|
|
describe('method.encodeABI', function () {
|
|
it('should handle bytes32 arrays that only contain 1 byte', function () {
|
|
var provider = new FakeIpcProvider();
|
|
var eth = new Eth(provider);
|
|
|
|
var contract = new eth.Contract(abi);
|
|
|
|
var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(2)), '0x'.concat('b'.repeat(2))).encodeABI();
|
|
|
|
assert.equal(result, [
|
|
'0x1323517e',
|
|
'aa00000000000000000000000000000000000000000000000000000000000000',
|
|
'bb00000000000000000000000000000000000000000000000000000000000000'
|
|
].join(''));
|
|
});
|
|
|
|
it('should handle bytes32 arrays that are short 1 byte', function () {
|
|
var provider = new FakeIpcProvider();
|
|
var eth = new Eth(provider);
|
|
|
|
var contract = new eth.Contract(abi);
|
|
|
|
var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(62)), '0x'.concat('b'.repeat(62))).encodeABI();
|
|
|
|
assert.equal(result, [
|
|
'0x1323517e',
|
|
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00',
|
|
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00'
|
|
].join(''));
|
|
});
|
|
|
|
// it('should throw an exception on bytes32 arrays that have an invalid length', function () {
|
|
// var provider = new FakeIpcProvider();
|
|
// var eth = new Eth(provider);
|
|
//
|
|
// var contract = new eth.Contract(abi);
|
|
//
|
|
// var test = function () {
|
|
// return contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(63)), '0x'.concat('b'.repeat(63))).encodeABI();
|
|
// };
|
|
//
|
|
// assert.throws(test, 'Given parameter bytes has an invalid length: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"');
|
|
// });
|
|
|
|
it('should handle bytes32 arrays that are full', function () {
|
|
var provider = new FakeIpcProvider();
|
|
var eth = new Eth(provider);
|
|
|
|
var contract = new eth.Contract(abi);
|
|
|
|
var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(64)), '0x'.concat('b'.repeat(64))).encodeABI();
|
|
|
|
assert.equal(result, [
|
|
'0x1323517e',
|
|
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
|
|
].join(''));
|
|
});
|
|
|
|
// it('should throw an exception on bytes32 arrays that are too long', function () {
|
|
// var provider = new FakeIpcProvider();
|
|
// var eth = new Eth(provider);
|
|
//
|
|
// var contract = new eth.Contract(abi);
|
|
//
|
|
// var test = function() {
|
|
// contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(66)), '0x'.concat('b'.repeat(66))).encodeABI();
|
|
// };
|
|
//
|
|
// assert.throws(test, 'Given parameter bytes is too long: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"');
|
|
// });
|
|
});
|
|
});
|