mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Squashed 'libjsqrc/ethereumjs/' changes from 2a0b46a..d5d2115
d5d2115 example contract using array, fixed #185 21ed235 removed connection keep-alive c44fe01 version 0.7.1 d9b785e fixed #248 490dde5 fixed encoding/decoding strings, #249 b3f5d09 fixed long bytes dynamic decoding/encoding, #249 d097821 small filter improvement d59b1cd removed xhr from browser 42b6e9d version 0.7.0 fe6defd gulp 44dcd24 set connection keepalive 2b17c0f gulpfile changes 4a46c73 Merge pull request #228 from ethereum/strings 93c8006 tests for encoding and decoding prematurely terminated strings and strings containing internal zeros 7dd44e7 Merge branch 'strings' of https://github.com/ethereum/ethereum.js into strings 390a9ff Merge branch 'develop' into strings bcd9cfb updated deps, removed unused karma ef15fc1 Merge pull request #244 from ethereum/allevents 6f74d57 Merge branch 'develop' into allevents 7aca17e Merge branch 'develop' into allevents c5ee34d fix for optional event parameters 8170a0a Merge pull request #245 from ethereum/filterInstantWatch 76a094c fixed all issues noted by marek d78b512 add possible callback to filters e1b17a9 re-build develop af9c027 all events filter b270616 version 0.6.1 c47d6a8 gulp 7cf7cf3 map file 6da1d3e gulp 450042e Update eth.js 3951286 Added sendRawTransaction 323b529 merged develop 16ffdf6 merged master ecf0a2c changed | to Math.floor d2b5ba2 Merge pull request #239 from ethereum/mistFixes 9e6bf9d removed browser XHR 9061116 fixed build issues in formatInputDynamicBytes 0e3b29c fixed coverage issue d51e9a2 merged latest develop f0247aa made meteor package available on the server side as well e97c5f5 fixed and tested meteor package init 3e49f56 add currentProvidor and mist fixes bd6d9ba merged develop 7b730b1 Merge branch 'strings' of github.com:ethereum/web3.js into strings cc533d9 fixed bytes wrong encoding 8c6f976 Merge branch 'develop' into strings 7c970e3 add bytes32 test with leading 0 9c7f7bb re-add .map files 189484f add extra int tests 73cc711 Merge branch 'develop' into strings fa3239f abi string type, fixes #216, #218, #219 git-subtree-dir: libjsqrc/ethereumjs git-subtree-split: d5d2115bf9ad07a736a189e1022b7d3a549e4006
This commit is contained in:
parent
9470fa2d4c
commit
72dc1c76fd
25
batch.js
25
batch.js
@ -28,6 +28,16 @@ describe('lib/web3/batch', function () {
|
||||
done();
|
||||
};
|
||||
|
||||
provider.injectValidation(function (payload) {
|
||||
var first = payload[0];
|
||||
var second = payload[1];
|
||||
|
||||
assert.equal(first.method, 'eth_getBalance');
|
||||
assert.deepEqual(first.params, ['0x0000000000000000000000000000000000000000', 'latest']);
|
||||
assert.equal(second.method, 'eth_getBalance');
|
||||
assert.deepEqual(second.params, ['0x0000000000000000000000000000000000000005', 'latest']);
|
||||
});
|
||||
|
||||
var batch = web3.createBatch();
|
||||
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
|
||||
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000005', 'latest', callback2));
|
||||
@ -55,7 +65,7 @@ describe('lib/web3/batch', function () {
|
||||
}];
|
||||
|
||||
|
||||
var address = '0x0000000000000000000000000000000000000000';
|
||||
var address = '0x1000000000000000000000000000000000000001';
|
||||
var result = '0x126';
|
||||
var result2 = '0x0000000000000000000000000000000000000000000000000000000000000123';
|
||||
|
||||
@ -71,6 +81,19 @@ describe('lib/web3/batch', function () {
|
||||
done();
|
||||
};
|
||||
|
||||
provider.injectValidation(function (payload) {
|
||||
var first = payload[0];
|
||||
var second = payload[1];
|
||||
|
||||
assert.equal(first.method, 'eth_getBalance');
|
||||
assert.deepEqual(first.params, ['0x0000000000000000000000000000000000000000', 'latest']);
|
||||
assert.equal(second.method, 'eth_call');
|
||||
assert.deepEqual(second.params, [{
|
||||
'to': '0x1000000000000000000000000000000000000001',
|
||||
'data': '0xe3d670d70000000000000000000000001000000000000000000000000000000000000001'
|
||||
}]);
|
||||
});
|
||||
|
||||
var batch = web3.createBatch();
|
||||
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
|
||||
batch.add(web3.eth.contract(abi).at(address).balance.request(address, callback2));
|
||||
|
@ -20,10 +20,53 @@ describe('lib/solidity/coder', function () {
|
||||
test({ type: 'int256', expected: new bn(1), value: '0000000000000000000000000000000000000000000000000000000000000001'});
|
||||
test({ type: 'int256', expected: new bn(16), value: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'int256', expected: new bn(-1), value: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
||||
test({ type: 'bytes32', expected: 'gavofyork', value: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', expected: 'gavofyork', value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
test({ type: 'int8', expected: new bn(16), value: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'int32', expected: new bn(16), value: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'int64', expected: new bn(16), value: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'int128', expected: new bn(16), value: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'bytes32', expected: '0x6761766f66796f726b0000000000000000000000000000000000000000000000',
|
||||
value: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', expected: '0x6761766f66796f726b',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes32', expected: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
value: '731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'bytes', expected: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'bytes', expected: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'bytes', expected: '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000060' +
|
||||
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'string', expected: 'gavofyork', value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'string', expected: '\xc3\xa4\x00\x00\xc3\xa4',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'string', expected: '\xc3',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'c300000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', expected: '0xc3a40000c3a4',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes32', expected: '0xc3a40000c3a40000000000000000000000000000000000000000000000000000',
|
||||
value: 'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', expected: [], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', expected: [new bn(3)], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
@ -49,6 +92,11 @@ describe('lib/solidity/coder', function () {
|
||||
test({ type: 'ureal', expected: new bn(8.5), value: '0000000000000000000000000000000880000000000000000000000000000000'});
|
||||
test({ type: 'address', expected: '0x407d73d8a49eeb85d32cf465507dd71d507100c1',
|
||||
value: '000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1'});
|
||||
test({ type: 'string', expected: 'welcome to ethereum. welcome to ethereum. welcome to ethereum.',
|
||||
value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'000000000000000000000000000000000000000000000000000000000000003e' +
|
||||
'77656c636f6d6520746f20657468657265756d2e2077656c636f6d6520746f20' +
|
||||
'657468657265756d2e2077656c636f6d6520746f20657468657265756d2e0000'});
|
||||
});
|
||||
});
|
||||
|
||||
@ -62,13 +110,13 @@ describe('lib/solidity/coder', function () {
|
||||
|
||||
|
||||
test({ types: ['int'], expected: [new bn(1)], values: '0000000000000000000000000000000000000000000000000000000000000001'});
|
||||
test({ types: ['bytes32', 'int'], expected: ['gavofyork', new bn(5)],
|
||||
test({ types: ['bytes32', 'int'], expected: ['0x6761766f66796f726b0000000000000000000000000000000000000000000000', new bn(5)],
|
||||
values: '6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000005'});
|
||||
test({ types: ['int', 'bytes32'], expected: [new bn(5), 'gavofyork'],
|
||||
test({ types: ['int', 'bytes32'], expected: [new bn(5), '0x6761766f66796f726b0000000000000000000000000000000000000000000000'],
|
||||
values: '0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['int', 'bytes', 'int', 'int', 'int', 'int[]'], expected: [new bn(1), 'gavofyork', new bn(2), new bn(3), new bn(4),
|
||||
test({ types: ['int', 'string', 'int', 'int', 'int', 'int[]'], expected: [new bn(1), 'gavofyork', new bn(2), new bn(3), new bn(4),
|
||||
[new bn(5), new bn(6), new bn(7)]],
|
||||
values: '0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'00000000000000000000000000000000000000000000000000000000000000c0' +
|
||||
@ -82,6 +130,24 @@ describe('lib/solidity/coder', function () {
|
||||
'0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000007'});
|
||||
test({ types: ['int', 'bytes', 'int', 'bytes'], expected: [
|
||||
new bn(5),
|
||||
'0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
new bn(3),
|
||||
'0x331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
],
|
||||
values: '0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000080' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003' +
|
||||
'00000000000000000000000000000000000000000000000000000000000000e0' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -20,10 +20,37 @@ describe('lib/solidity/coder', function () {
|
||||
test({ type: 'int256', value: 1, expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
||||
test({ type: 'int256', value: 16, expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ type: 'int256', value: -1, expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
||||
test({ type: 'bytes32', value: 'gavofyork', expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
test({ type: 'bytes32', value: '0x6761766f66796f726b',
|
||||
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes32', value: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
expected: '731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'bytes32', value: '0x02838654a83c213dae3698391eabbd54a5b6e1fb3452bc7fa4ea0dd5c8ce7e29',
|
||||
expected: '02838654a83c213dae3698391eabbd54a5b6e1fb3452bc7fa4ea0dd5c8ce7e29'});
|
||||
test({ type: 'bytes', value: '0x6761766f66796f726b',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', value: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'string', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes', value: '0xc3a40000c3a4',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'bytes32', value: '0xc3a40000c3a4',
|
||||
expected: 'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'string', value: '\xc3\xa4\x00\x00\xc3\xa4',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'string', value: '\xc3',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'c300000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', value: [], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
@ -48,6 +75,25 @@ describe('lib/solidity/coder', function () {
|
||||
test({ type: 'ureal', value: 1, expected: '0000000000000000000000000000000100000000000000000000000000000000'});
|
||||
test({ type: 'ureal', value: 2.125, expected: '0000000000000000000000000000000220000000000000000000000000000000'});
|
||||
test({ type: 'ureal', value: 8.5, expected: '0000000000000000000000000000000880000000000000000000000000000000'});
|
||||
test({ type: 'bytes', value: '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'bytes', value: '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000060' +
|
||||
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
test({ type: 'string', value: 'welcome to ethereum. welcome to ethereum. welcome to ethereum.',
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'000000000000000000000000000000000000000000000000000000000000003e' +
|
||||
'77656c636f6d6520746f20657468657265756d2e2077656c636f6d6520746f20' +
|
||||
'657468657265756d2e2077656c636f6d6520746f20657468657265756d2e0000'});
|
||||
});
|
||||
});
|
||||
|
||||
@ -67,8 +113,9 @@ describe('lib/solidity/coder', function () {
|
||||
test({ types: ['int256'], values: [1], expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
||||
test({ types: ['int256'], values: [16], expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
||||
test({ types: ['int256'], values: [-1], expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
||||
test({ types: ['bytes32'], values: ['gavofyork'], expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['bytes'], values: ['gavofyork'], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
test({ types: ['bytes32'], values: ['0x6761766f66796f726b'],
|
||||
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['string'], values: ['gavofyork'], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['int[]'], values: [[3]], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
@ -91,18 +138,18 @@ describe('lib/solidity/coder', function () {
|
||||
'0000000000000000000000000000000000000000000000000000000000000002' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000004'});
|
||||
test({ types: ['bytes32', 'int'], values: ['gavofyork', 5],
|
||||
test({ types: ['bytes32', 'int'], values: ['0x6761766f66796f726b', 5],
|
||||
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000005'});
|
||||
test({ types: ['int', 'bytes32'], values: [5, 'gavofyork'],
|
||||
test({ types: ['int', 'bytes32'], values: [5, '0x6761766f66796f726b'],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['bytes', 'int'], values: ['gavofyork', 5],
|
||||
test({ types: ['string', 'int'], values: ['gavofyork', 5],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['bytes', 'bool', 'int[]'], values: ['gavofyork', true, [1, 2, 3]],
|
||||
test({ types: ['string', 'bool', 'int[]'], values: ['gavofyork', true, [1, 2, 3]],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000060' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'00000000000000000000000000000000000000000000000000000000000000a0' +
|
||||
@ -112,7 +159,7 @@ describe('lib/solidity/coder', function () {
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000002' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||
test({ types: ['bytes', 'int[]'], values: ['gavofyork', [1, 2, 3]],
|
||||
test({ types: ['string', 'int[]'], values: ['gavofyork', [1, 2, 3]],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000080' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
@ -121,12 +168,12 @@ describe('lib/solidity/coder', function () {
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000002' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||
test({ types: ['int', 'bytes'], values: [5, 'gavofyork'],
|
||||
test({ types: ['int', 'string'], values: [5, 'gavofyork'],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ types: ['int', 'bytes', 'int', 'int', 'int', 'int[]'], values: [1, 'gavofyork', 2, 3, 4, [5, 6, 7]],
|
||||
test({ types: ['int', 'string', 'int', 'int', 'int', 'int[]'], values: [1, 'gavofyork', 2, 3, 4, [5, 6, 7]],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'00000000000000000000000000000000000000000000000000000000000000c0' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000002' +
|
||||
@ -139,6 +186,24 @@ describe('lib/solidity/coder', function () {
|
||||
'0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000006' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000007'});
|
||||
test({ types: ['int', 'bytes', 'int', 'bytes'], values: [
|
||||
5,
|
||||
'0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
3,
|
||||
'0x331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
||||
],
|
||||
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000080' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003' +
|
||||
'00000000000000000000000000000000000000000000000000000000000000e0' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000040' +
|
||||
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
||||
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
||||
});
|
||||
});
|
||||
|
||||
|
141
contract.js
141
contract.js
@ -127,6 +127,147 @@ describe('web3.eth.contract', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should create event filter and watch immediately', function (done) {
|
||||
var provider = new FakeHttpProvider();
|
||||
web3.setProvider(provider);
|
||||
web3.reset(); // reset different polls
|
||||
var signature = 'Changed(address,uint256,uint256,uint256)';
|
||||
var step = 0;
|
||||
provider.injectValidation(function (payload) {
|
||||
if (step === 0) {
|
||||
step = 1;
|
||||
provider.injectResult('0x3');
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, 'eth_newFilter');
|
||||
assert.deepEqual(payload.params[0], {
|
||||
topics: [
|
||||
'0x' + sha3(signature),
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
null
|
||||
],
|
||||
address: '0x1234567890123456789012345678901234567890'
|
||||
});
|
||||
} else if (step === 1) {
|
||||
step = 2;
|
||||
provider.injectResult([{
|
||||
address: address,
|
||||
topics: [
|
||||
'0x' + sha3(signature),
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
],
|
||||
number: 2,
|
||||
data: '0x0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000008'
|
||||
}]);
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, 'eth_getFilterLogs');
|
||||
} else if (step === 2 && utils.isArray(payload)) {
|
||||
provider.injectBatchResults([[{
|
||||
address: address,
|
||||
topics: [
|
||||
'0x' + sha3(signature),
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
],
|
||||
number: 2,
|
||||
data: '0x0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000008'
|
||||
}]]);
|
||||
var r = payload.filter(function (p) {
|
||||
return p.jsonrpc === '2.0' && p.method === 'eth_getFilterChanges' && p.params[0] === '0x3';
|
||||
});
|
||||
assert.equal(r.length > 0, true);
|
||||
}
|
||||
});
|
||||
|
||||
var contract = web3.eth.contract(desc).at(address);
|
||||
|
||||
var res = 0;
|
||||
var event = contract.Changed({from: address}, function(err, result) {
|
||||
assert.equal(result.args.from, address);
|
||||
assert.equal(result.args.amount, 1);
|
||||
assert.equal(result.args.t1, 1);
|
||||
assert.equal(result.args.t2, 8);
|
||||
res++;
|
||||
if (res === 2) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should create all event filter', function (done) {
|
||||
var provider = new FakeHttpProvider();
|
||||
web3.setProvider(provider);
|
||||
web3.reset(); // reset different polls
|
||||
var signature = 'Changed(address,uint256,uint256,uint256)';
|
||||
var step = 0;
|
||||
provider.injectValidation(function (payload) {
|
||||
if (step === 0) {
|
||||
step = 1;
|
||||
provider.injectResult('0x3');
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, 'eth_newFilter');
|
||||
assert.deepEqual(payload.params[0], {
|
||||
topics: [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
address: '0x1234567890123456789012345678901234567890'
|
||||
});
|
||||
} else if (step === 1) {
|
||||
step = 2;
|
||||
provider.injectResult([{
|
||||
address: address,
|
||||
topics: [
|
||||
'0x' + sha3(signature),
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
],
|
||||
number: 2,
|
||||
data: '0x0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000008'
|
||||
}]);
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, 'eth_getFilterLogs');
|
||||
} else if (step === 2 && utils.isArray(payload)) {
|
||||
provider.injectBatchResults([[{
|
||||
address: address,
|
||||
topics: [
|
||||
'0x' + sha3(signature),
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
],
|
||||
number: 2,
|
||||
data: '0x0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000008'
|
||||
}]]);
|
||||
var r = payload.filter(function (p) {
|
||||
return p.jsonrpc === '2.0' && p.method === 'eth_getFilterChanges' && p.params[0] === '0x3';
|
||||
});
|
||||
assert.equal(r.length > 0, true);
|
||||
}
|
||||
});
|
||||
|
||||
var contract = web3.eth.contract(desc).at(address);
|
||||
|
||||
var res = 0;
|
||||
var event = contract.allEvents();
|
||||
event.watch(function(err, result) {
|
||||
assert.equal(result.args.from, address);
|
||||
assert.equal(result.args.amount, 1);
|
||||
assert.equal(result.args.t1, 1);
|
||||
assert.equal(result.args.t2, 8);
|
||||
res++;
|
||||
if (res === 2) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should call constant function', function () {
|
||||
var provider = new FakeHttpProvider();
|
||||
web3.setProvider(provider);
|
||||
|
40
polling.js
40
polling.js
@ -63,6 +63,8 @@ var testPolling = function (tests) {
|
||||
var filter = web3[test.protocol].filter.apply(null, test.args);
|
||||
provider.injectBatchResults([test.secondResult]);
|
||||
filter.watch(function (err, result) {
|
||||
console.log(err, result);
|
||||
|
||||
if (test.err) {
|
||||
// todo
|
||||
} else {
|
||||
@ -72,6 +74,44 @@ var testPolling = function (tests) {
|
||||
|
||||
});
|
||||
});
|
||||
it('should create && successfully poll filter when passed as callback', function (done) {
|
||||
|
||||
// given
|
||||
var provider = new FakeHttpProvider();
|
||||
web3.setProvider(provider);
|
||||
web3.reset();
|
||||
provider.injectResult(test.firstResult);
|
||||
var step = 0;
|
||||
provider.injectValidation(function (payload) {
|
||||
if (step === 0) {
|
||||
step = 1;
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, test.firstPayload.method);
|
||||
assert.deepEqual(payload.params, test.firstPayload.params);
|
||||
} else if (step === 1 && utils.isArray(payload)) {
|
||||
var r = payload.filter(function (p) {
|
||||
return p.jsonrpc === '2.0' && p.method === test.secondPayload.method && p.params[0] === test.firstResult;
|
||||
});
|
||||
assert.equal(r.length > 0, true);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// add callback
|
||||
test.args.push(function (err, result) {
|
||||
if (test.err) {
|
||||
// todo
|
||||
} else {
|
||||
assert.equal(result, test.secondResult[0]);
|
||||
}
|
||||
done();
|
||||
|
||||
});
|
||||
|
||||
// when
|
||||
var filter = web3[test.protocol].filter.apply(null, test.args);
|
||||
provider.injectBatchResults([test.secondResult]);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -14,6 +14,7 @@ var tests = [
|
||||
{ value: '-0x1', expected: '-0x1'},
|
||||
{ value: '-15', expected: '-0xf'},
|
||||
{ value: '-0xf', expected: '-0xf'},
|
||||
{ value: '0x657468657265756d', expected: '0x657468657265756d'},
|
||||
{ value: '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd', expected: '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd'},
|
||||
{ value: '-0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', expected: '-0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'},
|
||||
{ value: '-0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd', expected: '-0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd'},
|
||||
|
@ -14,10 +14,10 @@ var implementation = {
|
||||
|
||||
describe('web3.eth.filter', function () {
|
||||
describe('methods', function () {
|
||||
//var f = filter({}, implementation);
|
||||
// var f = filter({}, implementation);
|
||||
|
||||
//u.methodExists(f, 'watch');
|
||||
//u.methodExists(f, 'stopWatching');
|
||||
//u.methodExists(f, 'get');
|
||||
// u.methodExists(f, 'watch');
|
||||
// u.methodExists(f, 'stopWatching');
|
||||
// u.methodExists(f, 'get');
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user