add missing formatters, fixed tests

This commit is contained in:
Fabian Vogelsteller 2015-03-23 16:42:09 +01:00
parent 7511e4c8af
commit 7fb440579d
7 changed files with 110 additions and 50 deletions

43
dist/ethereum.js vendored
View File

@ -1733,10 +1733,11 @@ module.exports = {
* { * {
* name: 'getBlock', * name: 'getBlock',
* call: blockCall, * call: blockCall,
* params: 2,
* outputFormatter: formatters.outputBlockFormatter, * outputFormatter: formatters.outputBlockFormatter,
* inputFormatter: [ // can be a formatter funciton or an array of functions. Where each item in the array will be used for one parameter * inputFormatter: [ // can be a formatter funciton or an array of functions. Where each item in the array will be used for one parameter
* utils.toHex, // formats paramter 1 * utils.toHex, // formats paramter 1
* function(param){ if(!param) return false; } // formats paramter 2 * function(param){ return !!param; } // formats paramter 2
* ] * ]
* }, * },
* *
@ -1776,22 +1777,22 @@ var getBalance = new Method({
name: 'getBalance', name: 'getBalance',
call: 'eth_getBalance', call: 'eth_getBalance',
params: 2, params: 2,
inputFormatter: [utils.toHex, formatters.inputBlockNumberFormatter], inputFormatter: [utils.toHex, formatters.inputDefaultBlockNumberFormatter],
outputFormatter: formatters.inputNumberFormatter outputFormatter: formatters.outputBigNumberFormatter
}); });
var getStorageAt = new Method({ var getStorageAt = new Method({
name: 'getStorageAt', name: 'getStorageAt',
call: 'eth_getStorageAt', call: 'eth_getStorageAt',
params: 3, params: 3,
inputFormatter: [null, null, formatters.inputBlockNumberFormatter] inputFormatter: [null, utils.toHex, formatters.inputDefaultBlockNumberFormatter]
}); });
var getCode = new Method({ var getCode = new Method({
name: 'getCode', name: 'getCode',
call: 'eth_getCode', call: 'eth_getCode',
params: 2, params: 2,
inputFormatter: [null, formatters.inputBlockNumberFormatter] inputFormatter: [null, formatters.inputDefaultBlockNumberFormatter]
}); });
var getBlock = new Method({ var getBlock = new Method({
@ -1800,14 +1801,13 @@ var getBlock = new Method({
params: 2, params: 2,
inputFormatter: [utils.toHex, function (val) { return !!val; }], inputFormatter: [utils.toHex, function (val) { return !!val; }],
outputFormatter: formatters.outputBlockFormatter outputFormatter: formatters.outputBlockFormatter
}); });
var getUncle = new Method({ var getUncle = new Method({
name: 'getUncle', name: 'getUncle',
call: uncleCall, call: uncleCall,
params: 2, params: 2,
inputFormatter: [utils.toHex, utils.toHex], inputFormatter: [utils.toHex, utils.toHex, function (val) { return !!val; }],
outputFormatter: formatters.outputBlockFormatter, outputFormatter: formatters.outputBlockFormatter,
}); });
@ -1822,16 +1822,16 @@ var getBlockTransactounCount = new Method({
name: 'getBlockTransactionCount', name: 'getBlockTransactionCount',
call: getBlockTransactionCountCall, call: getBlockTransactionCountCall,
params: 1, params: 1,
outputFormatter: utils.toDecimal, inputFormatter: [utils.toHex],
inputFormatter: utils.toHex outputFormatter: utils.toDecimal
}); });
var getBlockUncleCount = new Method({ var getBlockUncleCount = new Method({
name: 'getBlockUncleCount', name: 'getBlockUncleCount',
call: uncleCountCall, call: uncleCountCall,
params: 1, params: 1,
outputFormatter: utils.toDecimal, inputFormatter: [utils.toHex],
inputFormatter: utils.toHex outputFormatter: utils.toDecimal
}); });
var getTransaction = new Method({ var getTransaction = new Method({
@ -1845,14 +1845,15 @@ var getTransactionFromBlock = new Method({
name: 'getTransactionFromBlock', name: 'getTransactionFromBlock',
call: transactionFromBlockCall, call: transactionFromBlockCall,
params: 2, params: 2,
outputFormatter: formatters.outputTransactionFormatter, inputFormatter: [utils.toHex, utils.toHex],
inputFormatter: utils.toHex // HERE!!! outputFormatter: formatters.outputTransactionFormatter
}); });
var getTransactionCount = new Method({ var getTransactionCount = new Method({
name: 'getTransactionCount', name: 'getTransactionCount',
call: 'eth_getTransactionCount', call: 'eth_getTransactionCount',
params: 2, params: 2,
inputFormatter: [null, formatters.inputDefaultBlockNumberFormatter],
outputFormatter: utils.toDecimal outputFormatter: utils.toDecimal
}); });
@ -1860,14 +1861,14 @@ var sendTransaction = new Method({
name: 'sendTransaction', name: 'sendTransaction',
call: 'eth_sendTransaction', call: 'eth_sendTransaction',
params: 1, params: 1,
inputFormatter: formatters.inputTransactionFormatter inputFormatter: [formatters.inputTransactionFormatter]
}); });
var call = new Method({ var call = new Method({
name: 'call', name: 'call',
call: 'eth_call', call: 'eth_call',
params: 2, params: 2,
inputFormatter: formatters.inputCallFormatter inputFormatter: [formatters.inputCallFormatter, formatters.inputDefaultBlockNumberFormatter]
}); });
var compileSolidity = new Method({ var compileSolidity = new Method({
@ -2285,16 +2286,16 @@ var utils = require('../utils/utils');
/** /**
* Should the format output to a big number * Should the format output to a big number
* *
* @method outputNumberFormatter * @method outputBigNumberFormatter
* @param {String|Number|BigNumber} * @param {String|Number|BigNumber}
* @returns {BigNumber} object * @returns {BigNumber} object
*/ */
var outputNumberFormatter = function (number) { var outputBigNumberFormatter = function (number) {
return utils.toBigNumber(number); return utils.toBigNumber(number);
}; };
var inputBlockNumberFormatter = function (blockNumber) { var inputDefaultBlockNumberFormatter = function (blockNumber) {
return blockNumber === undefined ? "pending" : utils.toHex(blockNumber); // instead use default block number here return blockNumber === undefined ? "latest" : utils.toHex(blockNumber); // instead use default block number here
}; };
/** /**
@ -2451,11 +2452,11 @@ var outputPostFormatter = function(post){
}; };
module.exports = { module.exports = {
inputBlockNumberFormatter: inputBlockNumberFormatter, inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,
inputTransactionFormatter: inputTransactionFormatter, inputTransactionFormatter: inputTransactionFormatter,
inputCallFormatter: inputCallFormatter, inputCallFormatter: inputCallFormatter,
inputPostFormatter: inputPostFormatter, inputPostFormatter: inputPostFormatter,
outputNumberFormatter: outputNumberFormatter, outputBigNumberFormatter: outputBigNumberFormatter,
outputTransactionFormatter: outputTransactionFormatter, outputTransactionFormatter: outputTransactionFormatter,
outputBlockFormatter: outputBlockFormatter, outputBlockFormatter: outputBlockFormatter,
outputLogFormatter: outputLogFormatter, outputLogFormatter: outputLogFormatter,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -35,10 +35,11 @@
* { * {
* name: 'getBlock', * name: 'getBlock',
* call: blockCall, * call: blockCall,
* params: 2,
* outputFormatter: formatters.outputBlockFormatter, * outputFormatter: formatters.outputBlockFormatter,
* inputFormatter: [ // can be a formatter funciton or an array of functions. Where each item in the array will be used for one parameter * inputFormatter: [ // can be a formatter funciton or an array of functions. Where each item in the array will be used for one parameter
* utils.toHex, // formats paramter 1 * utils.toHex, // formats paramter 1
* function(param){ if(!param) return false; } // formats paramter 2 * function(param){ return !!param; } // formats paramter 2
* ] * ]
* }, * },
* *
@ -78,22 +79,22 @@ var getBalance = new Method({
name: 'getBalance', name: 'getBalance',
call: 'eth_getBalance', call: 'eth_getBalance',
params: 2, params: 2,
inputFormatter: [utils.toHex, formatters.inputBlockNumberFormatter], inputFormatter: [utils.toHex, formatters.inputDefaultBlockNumberFormatter],
outputFormatter: formatters.inputNumberFormatter outputFormatter: formatters.outputBigNumberFormatter
}); });
var getStorageAt = new Method({ var getStorageAt = new Method({
name: 'getStorageAt', name: 'getStorageAt',
call: 'eth_getStorageAt', call: 'eth_getStorageAt',
params: 3, params: 3,
inputFormatter: [null, null, formatters.inputBlockNumberFormatter] inputFormatter: [null, utils.toHex, formatters.inputDefaultBlockNumberFormatter]
}); });
var getCode = new Method({ var getCode = new Method({
name: 'getCode', name: 'getCode',
call: 'eth_getCode', call: 'eth_getCode',
params: 2, params: 2,
inputFormatter: [null, formatters.inputBlockNumberFormatter] inputFormatter: [null, formatters.inputDefaultBlockNumberFormatter]
}); });
var getBlock = new Method({ var getBlock = new Method({
@ -102,14 +103,13 @@ var getBlock = new Method({
params: 2, params: 2,
inputFormatter: [utils.toHex, function (val) { return !!val; }], inputFormatter: [utils.toHex, function (val) { return !!val; }],
outputFormatter: formatters.outputBlockFormatter outputFormatter: formatters.outputBlockFormatter
}); });
var getUncle = new Method({ var getUncle = new Method({
name: 'getUncle', name: 'getUncle',
call: uncleCall, call: uncleCall,
params: 2, params: 2,
inputFormatter: [utils.toHex, utils.toHex], inputFormatter: [utils.toHex, utils.toHex, function (val) { return !!val; }],
outputFormatter: formatters.outputBlockFormatter, outputFormatter: formatters.outputBlockFormatter,
}); });
@ -124,16 +124,16 @@ var getBlockTransactounCount = new Method({
name: 'getBlockTransactionCount', name: 'getBlockTransactionCount',
call: getBlockTransactionCountCall, call: getBlockTransactionCountCall,
params: 1, params: 1,
outputFormatter: utils.toDecimal, inputFormatter: [utils.toHex],
inputFormatter: utils.toHex outputFormatter: utils.toDecimal
}); });
var getBlockUncleCount = new Method({ var getBlockUncleCount = new Method({
name: 'getBlockUncleCount', name: 'getBlockUncleCount',
call: uncleCountCall, call: uncleCountCall,
params: 1, params: 1,
outputFormatter: utils.toDecimal, inputFormatter: [utils.toHex],
inputFormatter: utils.toHex outputFormatter: utils.toDecimal
}); });
var getTransaction = new Method({ var getTransaction = new Method({
@ -147,14 +147,15 @@ var getTransactionFromBlock = new Method({
name: 'getTransactionFromBlock', name: 'getTransactionFromBlock',
call: transactionFromBlockCall, call: transactionFromBlockCall,
params: 2, params: 2,
outputFormatter: formatters.outputTransactionFormatter, inputFormatter: [utils.toHex, utils.toHex],
inputFormatter: utils.toHex // HERE!!! outputFormatter: formatters.outputTransactionFormatter
}); });
var getTransactionCount = new Method({ var getTransactionCount = new Method({
name: 'getTransactionCount', name: 'getTransactionCount',
call: 'eth_getTransactionCount', call: 'eth_getTransactionCount',
params: 2, params: 2,
inputFormatter: [null, formatters.inputDefaultBlockNumberFormatter],
outputFormatter: utils.toDecimal outputFormatter: utils.toDecimal
}); });
@ -162,14 +163,14 @@ var sendTransaction = new Method({
name: 'sendTransaction', name: 'sendTransaction',
call: 'eth_sendTransaction', call: 'eth_sendTransaction',
params: 1, params: 1,
inputFormatter: formatters.inputTransactionFormatter inputFormatter: [formatters.inputTransactionFormatter]
}); });
var call = new Method({ var call = new Method({
name: 'call', name: 'call',
call: 'eth_call', call: 'eth_call',
params: 2, params: 2,
inputFormatter: formatters.inputCallFormatter inputFormatter: [formatters.inputCallFormatter, formatters.inputDefaultBlockNumberFormatter]
}); });
var compileSolidity = new Method({ var compileSolidity = new Method({

View File

@ -26,16 +26,16 @@ var utils = require('../utils/utils');
/** /**
* Should the format output to a big number * Should the format output to a big number
* *
* @method outputNumberFormatter * @method outputBigNumberFormatter
* @param {String|Number|BigNumber} * @param {String|Number|BigNumber}
* @returns {BigNumber} object * @returns {BigNumber} object
*/ */
var outputNumberFormatter = function (number) { var outputBigNumberFormatter = function (number) {
return utils.toBigNumber(number); return utils.toBigNumber(number);
}; };
var inputBlockNumberFormatter = function (blockNumber) { var inputDefaultBlockNumberFormatter = function (blockNumber) {
return blockNumber === undefined ? "pending" : utils.toHex(blockNumber); // instead use default block number here return blockNumber === undefined ? "latest" : utils.toHex(blockNumber); // instead use default block number here
}; };
/** /**
@ -192,11 +192,11 @@ var outputPostFormatter = function(post){
}; };
module.exports = { module.exports = {
inputBlockNumberFormatter: inputBlockNumberFormatter, inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,
inputTransactionFormatter: inputTransactionFormatter, inputTransactionFormatter: inputTransactionFormatter,
inputCallFormatter: inputCallFormatter, inputCallFormatter: inputCallFormatter,
inputPostFormatter: inputPostFormatter, inputPostFormatter: inputPostFormatter,
outputNumberFormatter: outputNumberFormatter, outputBigNumberFormatter: outputBigNumberFormatter,
outputTransactionFormatter: outputTransactionFormatter, outputTransactionFormatter: outputTransactionFormatter,
outputBlockFormatter: outputBlockFormatter, outputBlockFormatter: outputBlockFormatter,
outputLogFormatter: outputLogFormatter, outputLogFormatter: outputLogFormatter,

58
test/FakeHttpProvider.js Normal file
View File

@ -0,0 +1,58 @@
var chai = require('chai');
var assert = require('assert');
var utils = require('../lib/utils/utils');
var getResponseStub = function () {
return {
jsonrpc: '2.0',
id: 1,
result: 0
};
};
var FakeHttpProvider = function () {
this.response = getResponseStub();
this.error = null;
this.validation = null;
};
FakeHttpProvider.prototype.send = function (payload) {
assert.equal(utils.isArray(payload) || utils.isObject(payload), true);
// TODO: validate jsonrpc request
if (this.error) {
throw this.error;
}
if (this.validation) {
this.validation(payload);
}
return this.response;
};
FakeHttpProvider.prototype.sendAsync = function (payload, callback) {
assert.equal(utils.isArray(payload) || utils.isObject(payload), true);
assert.equal(utils.isFunction(callback), true);
if (this.validation) {
this.validation(payload, callback);
}
callback(this.error, this.response);
};
FakeHttpProvider.prototype.injectResponse = function (response) {
this.response = response;
};
FakeHttpProvider.prototype.injectResult = function (result) {
this.response = getResponseStub();
this.response.result = result;
};
FakeHttpProvider.prototype.injectError = function (error) {
this.error = error;
};
FakeHttpProvider.prototype.injectValidation = function (callback) {
this.validation = callback;
};
module.exports = FakeHttpProvider;

View File

@ -19,7 +19,7 @@ var tests = [{
call: 'eth_getBalance' call: 'eth_getBalance'
}, { }, {
args: [0x12d], args: [0x12d],
formattedArgs: ['0x12d', 'pending'], // here we might want to get current defaultBlock formattedArgs: ['0x12d', 'latest'], // here we might want to get current defaultBlock
result: '0x31981', result: '0x31981',
formattedResult: '0x31981', formattedResult: '0x31981',
call: 'eth_getBalance' call: 'eth_getBalance'
@ -45,7 +45,7 @@ describe('eth', function () {
var result = web3.eth[method].apply(null, test.args.slice(0)); var result = web3.eth[method].apply(null, test.args.slice(0));
// then // then
assert.equal(test.formattedResult, result); assert.equal(+test.formattedResult, result.toNumber());
}); });
it('async test: ' + index, function (done) { it('async test: ' + index, function (done) {
@ -61,7 +61,7 @@ describe('eth', function () {
}; };
provider.injectValidation(validation); provider.injectValidation(validation);
var callback = function (err, result) { var callback = function (err, result) {
assert.equal(test.formattedResult, result); assert.equal(+test.formattedResult, result.toNumber());
done(); done();
}; };