mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Squashed 'libjsqrc/ethereumjs/' changes from 16861fc..ca46cb5
ca46cb5 updated examples aff3497 updated icap example 9fa9b16 gulp 61f1ba6 Merge pull request #224 from alexvandesande/prefix-name-reorg 448dd30 Merge branch 'master' into develop 7753724 build files fc3dc7a build files c9ebd7e version 0.5.0 448cf03 Merge branch 'master' into develop 43e8f0e Merge pull request #207 from ethereum/icap 0a56733 updated icap example e67e705 Merge pull request #223 from ethereum/revert-222-master f229f4e Revert "sync sendTransaction returning tx address" ca58837 Merge pull request #222 from jesuscript/master 66a2b6c sync sendTransaction returning tx address b19e46c updated "deposit" method description, updated icap example contract abi fbb9a41 Merge branch 'develop' into icap 3bb6e4f sha3 backward compatibility. #205 d0be181 fixed const functions calls handling errors 858d0c6 lint 95aabe3 sendIBANTransaction && tests 5866f08 milli should have two l's bacb03c Rename Kwei to kwei, added support for some SI base units for ether dfd5060 use "official" namereg, updated examples d8ad2b7 Merge branch 'develop' into icap 3fb420f Merge branch 'master' into develop ea4d66e updated examples e6209c6 Merge branch 'master' into develop 71ae809 version 0.4.3 92e2a2f Merge branch 'master' into develop d03bec6 decoding of empty array, fixed #210, fixed #211 9abf38a fixed encoding of empty arrays 2ad458c Merge pull request #212 from ethereum/estimateGas be2e93f build d4bf850 fixed typo 0594e7f add estimateGas to contract methods and fixed sendTransaction return value 55c4653 test/isIBAN.js e9483a6 icap.html example 6fb04d8 namereg example allows to register custom names 60c9bf8 removed natspec example, added namereg example cd773fc updated docs 4af0085 web3.eth.namereg contract, icap in progress 02556ea removed unnecessary file d320552 crypto-js integrated into project adf91df sha3 init git-subtree-dir: libjsqrc/ethereumjs git-subtree-split: ca46cb5c94da4d37e9f4a5b8f6c0d117b72668d7
This commit is contained in:
parent
710a1463c1
commit
58f2e59e2a
4
batch.js
4
batch.js
@ -58,10 +58,6 @@ describe('lib/web3/batch', function () {
|
|||||||
var address = '0x0000000000000000000000000000000000000000';
|
var address = '0x0000000000000000000000000000000000000000';
|
||||||
var result = '0x126';
|
var result = '0x126';
|
||||||
var result2 = '0x0000000000000000000000000000000000000000000000000000000000000123';
|
var result2 = '0x0000000000000000000000000000000000000000000000000000000000000123';
|
||||||
var signature = '0x001122334455';
|
|
||||||
|
|
||||||
// TODO: fix this, maybe in browser sha3?
|
|
||||||
provider.injectResult(signature);
|
|
||||||
|
|
||||||
var counter = 0;
|
var counter = 0;
|
||||||
var callback = function (err, r) {
|
var callback = function (err, r) {
|
||||||
|
@ -24,6 +24,8 @@ describe('lib/solidity/coder', function () {
|
|||||||
test({ type: 'bytes', expected: 'gavofyork', value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
test({ type: 'bytes', expected: 'gavofyork', value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||||
|
test({ type: 'int[]', expected: [], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
|
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||||
test({ type: 'int[]', expected: [new bn(3)], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
test({ type: 'int[]', expected: [new bn(3)], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||||
|
@ -24,6 +24,8 @@ describe('lib/solidity/coder', function () {
|
|||||||
test({ type: 'bytes', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
test({ type: 'bytes', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||||
|
test({ type: 'int[]', value: [], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
|
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||||
test({ type: 'int[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
test({ type: 'int[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||||
|
308
contract.js
308
contract.js
@ -5,6 +5,7 @@ var FakeHttpProvider = require('./helpers/FakeHttpProvider');
|
|||||||
var FakeHttpProvider2 = require('./helpers/FakeHttpProvider2');
|
var FakeHttpProvider2 = require('./helpers/FakeHttpProvider2');
|
||||||
var utils = require('../lib/utils/utils');
|
var utils = require('../lib/utils/utils');
|
||||||
var BigNumber = require('bignumber.js');
|
var BigNumber = require('bignumber.js');
|
||||||
|
var sha3 = require('../lib/utils/sha3');
|
||||||
|
|
||||||
var desc = [{
|
var desc = [{
|
||||||
"name": "balance(address)",
|
"name": "balance(address)",
|
||||||
@ -60,34 +61,28 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset(); // reset different polls
|
web3.reset(); // reset different polls
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'Changed(address,uint256,uint256,uint256)';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
var step = 0;
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
if (step === 0) {
|
||||||
step = 1;
|
step = 1;
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
|
||||||
assert.equal(payload.params[0], web3.fromAscii('Changed(address,uint256,uint256,uint256)'));
|
|
||||||
} else if (step === 1) {
|
|
||||||
step = 2;
|
|
||||||
provider.injectResult(3);
|
provider.injectResult(3);
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
assert.equal(payload.jsonrpc, '2.0');
|
||||||
assert.equal(payload.method, 'eth_newFilter');
|
assert.equal(payload.method, 'eth_newFilter');
|
||||||
assert.deepEqual(payload.params[0], {
|
assert.deepEqual(payload.params[0], {
|
||||||
topics: [
|
topics: [
|
||||||
sha3,
|
'0x' + sha3(signature),
|
||||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
address: '0x1234567890123456789012345678901234567890'
|
address: '0x1234567890123456789012345678901234567890'
|
||||||
});
|
});
|
||||||
} else if (step === 2) {
|
} else if (step === 1) {
|
||||||
step = 3;
|
step = 2;
|
||||||
provider.injectResult([{
|
provider.injectResult([{
|
||||||
address: address,
|
address: address,
|
||||||
topics: [
|
topics: [
|
||||||
sha3,
|
'0x' + sha3(signature),
|
||||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||||
],
|
],
|
||||||
@ -97,11 +92,11 @@ describe('web3.eth.contract', function () {
|
|||||||
}]);
|
}]);
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
assert.equal(payload.jsonrpc, '2.0');
|
||||||
assert.equal(payload.method, 'eth_getFilterLogs');
|
assert.equal(payload.method, 'eth_getFilterLogs');
|
||||||
} else if (step === 3 && utils.isArray(payload)) {
|
} else if (step === 2 && utils.isArray(payload)) {
|
||||||
provider.injectBatchResults([[{
|
provider.injectBatchResults([[{
|
||||||
address: address,
|
address: address,
|
||||||
topics: [
|
topics: [
|
||||||
sha3,
|
'0x' + sha3(signature),
|
||||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||||
],
|
],
|
||||||
@ -135,53 +130,37 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032');
|
||||||
|
var signature = 'balance(address)'
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_call');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
to: address
|
||||||
assert.equal(payload.params[0], web3.fromAscii('balance(address)'));
|
}, 'latest']);
|
||||||
} else if (step === 1) {
|
|
||||||
assert.equal(payload.method, 'eth_call');
|
|
||||||
assert.deepEqual(payload.params, [{
|
|
||||||
data: sha3.slice(0, 10) + '0000000000000000000000001234567890123456789012345678901234567890',
|
|
||||||
to: address
|
|
||||||
}, 'latest']);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
|
|
||||||
contract.balance(address);
|
var r = contract.balance(address);
|
||||||
|
assert.deepEqual(new BigNumber(0x32), r);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should sendTransaction to contract function', function () {
|
it('should sendTransaction to contract function', function () {
|
||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'send(address,uint256)';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_sendTransaction');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||||
assert.equal(payload.params[0], web3.fromAscii('send(address,uint256)'));
|
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||||
} else if (step === 1) {
|
to: address
|
||||||
assert.equal(payload.method, 'eth_sendTransaction');
|
}]);
|
||||||
assert.deepEqual(payload.params, [{
|
|
||||||
data: sha3.slice(0, 10) +
|
|
||||||
'0000000000000000000000001234567890123456789012345678901234567890' +
|
|
||||||
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
|
||||||
to: address
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
@ -194,30 +173,23 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032');
|
||||||
|
var signature = 'balance(address)';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_call');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
to: address,
|
||||||
assert.equal(payload.params[0], web3.fromAscii('balance(address)'));
|
from: address,
|
||||||
} else if (step === 1) {
|
gas: '0xc350'
|
||||||
assert.equal(payload.method, 'eth_call');
|
}, 'latest']);
|
||||||
assert.deepEqual(payload.params, [{
|
|
||||||
data: sha3.slice(0, 10) + '0000000000000000000000001234567890123456789012345678901234567890',
|
|
||||||
to: address,
|
|
||||||
from: address,
|
|
||||||
gas: '0xc350'
|
|
||||||
}, 'latest']);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
|
|
||||||
contract.balance(address, {from: address, gas: 50000});
|
var r = contract.balance(address, {from: address, gas: 50000});
|
||||||
|
assert.deepEqual(new BigNumber(0x32), r);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -226,30 +198,23 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032');
|
||||||
|
var signature = 'balance(address)';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_call');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890',
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
to: address,
|
||||||
assert.equal(payload.params[0], web3.fromAscii('balance(address)'));
|
from: address,
|
||||||
} else if (step === 1) {
|
gas: '0xc350'
|
||||||
assert.equal(payload.method, 'eth_call');
|
}, 'latest']);
|
||||||
assert.deepEqual(payload.params, [{
|
|
||||||
data: sha3.slice(0, 10) + '0000000000000000000000001234567890123456789012345678901234567890',
|
|
||||||
to: address,
|
|
||||||
from: address,
|
|
||||||
gas: '0xc350'
|
|
||||||
}, 'latest']);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
|
|
||||||
contract.balance.call(address, {from: address, gas: 50000});
|
var r = contract.balance.call(address, {from: address, gas: 50000});
|
||||||
|
assert.deepEqual(new BigNumber(0x32), r);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -257,29 +222,20 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'send(address,uint256)';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_sendTransaction');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||||
assert.equal(payload.params[0], web3.fromAscii('send(address,uint256)'));
|
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||||
} else if (step === 1) {
|
to: address,
|
||||||
assert.equal(payload.method, 'eth_sendTransaction');
|
from: address,
|
||||||
assert.deepEqual(payload.params, [{
|
gas: '0xc350',
|
||||||
data: sha3.slice(0, 10) +
|
gasPrice: '0xbb8',
|
||||||
'0000000000000000000000001234567890123456789012345678901234567890' +
|
value: '0x2710'
|
||||||
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
}]);
|
||||||
to: address,
|
|
||||||
from: address,
|
|
||||||
gas: '0xc350',
|
|
||||||
gasPrice: '0xbb8',
|
|
||||||
value: '0x2710'
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
@ -291,29 +247,20 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'send(address,uint256)';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_sendTransaction');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||||
assert.equal(payload.params[0], web3.fromAscii('send(address,uint256)'));
|
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||||
} else if (step === 1) {
|
to: address,
|
||||||
assert.equal(payload.method, 'eth_sendTransaction');
|
from: address,
|
||||||
assert.deepEqual(payload.params, [{
|
gas: '0xc350',
|
||||||
data: sha3.slice(0, 10) +
|
gasPrice: '0xbb8',
|
||||||
'0000000000000000000000001234567890123456789012345678901234567890' +
|
value: '0x2710'
|
||||||
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
}]);
|
||||||
to: address,
|
|
||||||
from: address,
|
|
||||||
gas: '0xc350',
|
|
||||||
gasPrice: '0xbb8',
|
|
||||||
value: '0x2710'
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
@ -325,29 +272,20 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider();
|
var provider = new FakeHttpProvider();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResult(sha3);
|
var signature = 'send(address,uint256)';
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 0) {
|
assert.equal(payload.method, 'eth_sendTransaction');
|
||||||
step = 1;
|
assert.deepEqual(payload.params, [{
|
||||||
assert.equal(payload.jsonrpc, '2.0');
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
assert.equal(payload.method, 'web3_sha3');
|
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||||
assert.equal(payload.params[0], web3.fromAscii('send(address,uint256)'));
|
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||||
} else if (step === 1) {
|
to: address,
|
||||||
assert.equal(payload.method, 'eth_sendTransaction');
|
from: address,
|
||||||
assert.deepEqual(payload.params, [{
|
gas: '0xc350',
|
||||||
data: sha3.slice(0, 10) +
|
gasPrice: '0xbb8',
|
||||||
'0000000000000000000000001234567890123456789012345678901234567890' +
|
value: '0x2710'
|
||||||
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
}]);
|
||||||
to: address,
|
|
||||||
from: address,
|
|
||||||
gas: '0xc350',
|
|
||||||
gasPrice: '0xbb8',
|
|
||||||
value: '0x2710'
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
@ -358,32 +296,52 @@ describe('web3.eth.contract', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should explicitly estimateGas with optional params', function () {
|
||||||
|
var provider = new FakeHttpProvider();
|
||||||
|
web3.setProvider(provider);
|
||||||
|
web3.reset();
|
||||||
|
var signature = 'send(address,uint256)';
|
||||||
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
|
provider.injectValidation(function (payload) {
|
||||||
|
assert.equal(payload.method, 'eth_estimateGas');
|
||||||
|
assert.deepEqual(payload.params, [{
|
||||||
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
|
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||||
|
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||||
|
to: address,
|
||||||
|
from: address,
|
||||||
|
gas: '0xc350',
|
||||||
|
gasPrice: '0xbb8',
|
||||||
|
value: '0x2710'
|
||||||
|
}]);
|
||||||
|
});
|
||||||
|
|
||||||
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
|
|
||||||
|
contract.send.estimateGas(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000});
|
||||||
|
});
|
||||||
|
|
||||||
it('should call testArr method and properly parse result', function () {
|
it('should call testArr method and properly parse result', function () {
|
||||||
var provider = new FakeHttpProvider2();
|
var provider = new FakeHttpProvider2();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'testArr(int[])';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResultList([{
|
provider.injectResultList([{
|
||||||
result: sha3
|
|
||||||
}, {
|
|
||||||
result: '0x0000000000000000000000000000000000000000000000000000000000000005'
|
result: '0x0000000000000000000000000000000000000000000000000000000000000005'
|
||||||
}]);
|
}]);
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 1) { // getting sha3 is first
|
assert.equal(payload.method, 'eth_call');
|
||||||
assert.equal(payload.method, 'eth_call');
|
assert.deepEqual(payload.params, [{
|
||||||
assert.deepEqual(payload.params, [{
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
data: sha3.slice(0, 10) +
|
'0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000020' +
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
'0000000000000000000000000000000000000000000000000000000000000003',
|
||||||
'0000000000000000000000000000000000000000000000000000000000000003',
|
to: address
|
||||||
to: address
|
},
|
||||||
},
|
'latest'
|
||||||
'latest'
|
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
step++;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
@ -396,28 +354,22 @@ describe('web3.eth.contract', function () {
|
|||||||
var provider = new FakeHttpProvider2();
|
var provider = new FakeHttpProvider2();
|
||||||
web3.setProvider(provider);
|
web3.setProvider(provider);
|
||||||
web3.reset();
|
web3.reset();
|
||||||
var sha3 = '0x5131231231231231231231';
|
var signature = 'testArr(int[])';
|
||||||
var address = '0x1234567890123456789012345678901234567890';
|
var address = '0x1234567890123456789012345678901234567890';
|
||||||
provider.injectResultList([{
|
provider.injectResultList([{
|
||||||
result: sha3
|
|
||||||
}, {
|
|
||||||
result: '0x0000000000000000000000000000000000000000000000000000000000000005'
|
result: '0x0000000000000000000000000000000000000000000000000000000000000005'
|
||||||
}]);
|
}]);
|
||||||
var step = 0;
|
|
||||||
provider.injectValidation(function (payload) {
|
provider.injectValidation(function (payload) {
|
||||||
if (step === 1) { // getting sha3 is first
|
assert.equal(payload.method, 'eth_call');
|
||||||
assert.equal(payload.method, 'eth_call');
|
assert.deepEqual(payload.params, [{
|
||||||
assert.deepEqual(payload.params, [{
|
data: '0x' + sha3(signature).slice(0, 8) +
|
||||||
data: sha3.slice(0, 10) +
|
'0000000000000000000000000000000000000000000000000000000000000020' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000020' +
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
'0000000000000000000000000000000000000000000000000000000000000003',
|
||||||
'0000000000000000000000000000000000000000000000000000000000000003',
|
to: address
|
||||||
to: address
|
},
|
||||||
},
|
'latest'
|
||||||
'latest'
|
]);
|
||||||
]);
|
|
||||||
}
|
|
||||||
step++;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var contract = web3.eth.contract(desc).at(address);
|
var contract = web3.eth.contract(desc).at(address);
|
||||||
|
17
sha3.js
Normal file
17
sha3.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
var chai = require('chai');
|
||||||
|
var assert = chai.assert;
|
||||||
|
var sha3 = require('../lib/utils/sha3');
|
||||||
|
var web3 = require('../index');
|
||||||
|
|
||||||
|
describe('lib/utils/sha3', function () {
|
||||||
|
var test = function (v, e) {
|
||||||
|
it('should encode ' + v + ' to ' + e, function () {
|
||||||
|
assert.equal(sha3(v), e);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
test('test123', 'f81b517a242b218999ec8eec0ea6e2ddbef2a367a14e93f4a32a39e260f686ad');
|
||||||
|
test('test(int)', 'f4d03772bec1e62fbe8c5691e1a9101e520e8f8b5ca612123694632bf3cb51b1');
|
||||||
|
test(web3.fromAscii('test123'), 'f81b517a242b218999ec8eec0ea6e2ddbef2a367a14e93f4a32a39e260f686ad');
|
||||||
|
});
|
||||||
|
|
32
utils.isIBAN.js
Normal file
32
utils.isIBAN.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
var chai = require('chai');
|
||||||
|
var utils = require('../lib/utils/utils.js');
|
||||||
|
var assert = chai.assert;
|
||||||
|
|
||||||
|
var tests = [
|
||||||
|
{ obj: function () {}, is: false},
|
||||||
|
{ obj: new Function(), is: false},
|
||||||
|
{ obj: 'function', is: false},
|
||||||
|
{ obj: {}, is: false},
|
||||||
|
{ obj: '[]', is: false},
|
||||||
|
{ obj: '[1, 2]', is: false},
|
||||||
|
{ obj: '{}', is: false},
|
||||||
|
{ obj: '{"a": 123, "b" :3,}', is: false},
|
||||||
|
{ obj: '{"c" : 2}', is: false},
|
||||||
|
{ obj: 'XE81ETHXREGGAVOFYORK', is: true},
|
||||||
|
{ obj: 'XE81ETCXREGGAVOFYORK', is: false},
|
||||||
|
{ obj: 'XE81ETHXREGGAVOFYORKD', is: false},
|
||||||
|
{ obj: 'XE81ETHXREGGaVOFYORK', is: false},
|
||||||
|
{ obj: 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS', is: true},
|
||||||
|
{ obj: 'XD7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS', is: false}
|
||||||
|
];
|
||||||
|
|
||||||
|
describe('lib/utils/utils', function () {
|
||||||
|
describe('isIBAN', function () {
|
||||||
|
tests.forEach(function (test) {
|
||||||
|
it('shoud test if value ' + test.obj + ' is iban: ' + test.is, function () {
|
||||||
|
assert.equal(utils.isIBAN(test.obj), test.is);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -19,6 +19,14 @@ describe('lib/utils/utils', function () {
|
|||||||
assert.equal(utils.toWei(1, 'gether'), '1000000000000000000000000000');
|
assert.equal(utils.toWei(1, 'gether'), '1000000000000000000000000000');
|
||||||
assert.equal(utils.toWei(1, 'tether'), '1000000000000000000000000000000');
|
assert.equal(utils.toWei(1, 'tether'), '1000000000000000000000000000000');
|
||||||
|
|
||||||
|
assert.equal(utils.toWei(1, 'kwei'), utils.toWei(1, 'femtoether'));
|
||||||
|
assert.equal(utils.toWei(1, 'babbage'), utils.toWei(1, 'picoether'));
|
||||||
|
assert.equal(utils.toWei(1, 'shannon'), utils.toWei(1, 'nanoether'));
|
||||||
|
assert.equal(utils.toWei(1, 'szabo'), utils.toWei(1, 'microether'));
|
||||||
|
assert.equal(utils.toWei(1, 'finney'), utils.toWei(1, 'milliether'));
|
||||||
|
assert.equal(utils.toWei(1, 'milli'), utils.toWei(1, 'milliether'));
|
||||||
|
assert.equal(utils.toWei(1, 'milli'), utils.toWei(1000, 'micro'));
|
||||||
|
|
||||||
assert.throws(function () {utils.toWei(1, 'wei1');}, Error);
|
assert.throws(function () {utils.toWei(1, 'wei1');}, Error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
49
web3.eth.sendIBANTransaction.js
Normal file
49
web3.eth.sendIBANTransaction.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
var chai = require('chai');
|
||||||
|
var assert = chai.assert;
|
||||||
|
var web3 = require('../index');
|
||||||
|
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
|
||||||
|
var FakeHttpProvider2 = require('./helpers/FakeHttpProvider2');
|
||||||
|
|
||||||
|
describe('web3.eth.sendIBANTransaction', function () {
|
||||||
|
it('should send transaction', function () {
|
||||||
|
|
||||||
|
var iban = 'XE81ETHXREGGAVOFYORK';
|
||||||
|
var address = '0x1234567890123456789012345678901234500000';
|
||||||
|
var exAddress = '0x1234567890123456789012345678901234567890'
|
||||||
|
|
||||||
|
var provider = new FakeHttpProvider2();
|
||||||
|
web3.setProvider(provider);
|
||||||
|
web3.reset();
|
||||||
|
|
||||||
|
provider.injectResultList([{
|
||||||
|
result: exAddress
|
||||||
|
}, {
|
||||||
|
result: ''
|
||||||
|
}]);
|
||||||
|
|
||||||
|
var step = 0;
|
||||||
|
provider.injectValidation(function (payload) {
|
||||||
|
if (step === 0) {
|
||||||
|
step++;
|
||||||
|
assert.equal(payload.method, 'eth_call');
|
||||||
|
assert.deepEqual(payload.params, [{
|
||||||
|
data: '0x3b3b57de5852454700000000000000000000000000000000000000000000000000000000',
|
||||||
|
to: web3.eth.namereg.address
|
||||||
|
}, "latest"]);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
assert.equal(payload.method, 'eth_sendTransaction');
|
||||||
|
assert.deepEqual(payload.params, [{
|
||||||
|
data: '0xb214faa54741564f46594f524b0000000000000000000000000000000000000000000000',
|
||||||
|
from: address,
|
||||||
|
to: exAddress,
|
||||||
|
value: payload.params[0].value // don't check this
|
||||||
|
}]);
|
||||||
|
});
|
||||||
|
|
||||||
|
web3.eth.sendIBANTransaction(address, iban, 10000);
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
16
web3.sha3.js
16
web3.sha3.js
@ -1,16 +0,0 @@
|
|||||||
var BigNumber = require('bignumber.js');
|
|
||||||
var web3 = require('../index');
|
|
||||||
var testMethod = require('./helpers/test.method.js');
|
|
||||||
|
|
||||||
var method = 'sha3';
|
|
||||||
|
|
||||||
var tests = [{
|
|
||||||
args: ['myString'],
|
|
||||||
formattedArgs: ['myString'],
|
|
||||||
result: '0x319319f831983198319881',
|
|
||||||
formattedResult: '0x319319f831983198319881',
|
|
||||||
call: 'web3_'+ method
|
|
||||||
}];
|
|
||||||
|
|
||||||
testMethod.runTests(null, method, tests);
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user