Merge commit '2b4d38b9bf059014596e1ab00c99dc2ad4ab3761' into ethereumjs
This commit is contained in:
		
							
								
								
									
										43
									
								
								dist/ethereum.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								dist/ethereum.js
									
									
									
									
										vendored
									
									
								
							@@ -117,6 +117,13 @@ var formatInputBool = function (value) {
 | 
				
			|||||||
    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
 | 
					    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Formats input value to byte representation of real
 | 
				
			||||||
 | 
					/// Values are multiplied by 2^m and encoded as integers
 | 
				
			||||||
 | 
					/// @returns byte representation of real
 | 
				
			||||||
 | 
					var formatInputReal = function (value) {
 | 
				
			||||||
 | 
					    return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var dynamicTypeBytes = function (type, value) {
 | 
					var dynamicTypeBytes = function (type, value) {
 | 
				
			||||||
    // TODO: decide what to do with array of strings
 | 
					    // TODO: decide what to do with array of strings
 | 
				
			||||||
    if (arrayType(type) || prefixedType('string')(type))
 | 
					    if (arrayType(type) || prefixedType('string')(type))
 | 
				
			||||||
@@ -133,8 +140,8 @@ var setupInputTypes = function () {
 | 
				
			|||||||
        { type: prefixedType('int'), format: formatInputInt },
 | 
					        { type: prefixedType('int'), format: formatInputInt },
 | 
				
			||||||
        { type: prefixedType('hash'), format: formatInputInt },
 | 
					        { type: prefixedType('hash'), format: formatInputInt },
 | 
				
			||||||
        { type: prefixedType('string'), format: formatInputString }, 
 | 
					        { type: prefixedType('string'), format: formatInputString }, 
 | 
				
			||||||
        { type: prefixedType('real'), format: formatInputInt },
 | 
					        { type: prefixedType('real'), format: formatInputReal },
 | 
				
			||||||
        { type: prefixedType('ureal'), format: formatInputInt },
 | 
					        { type: prefixedType('ureal'), format: formatInputReal },
 | 
				
			||||||
        { type: namedType('address'), format: formatInputInt },
 | 
					        { type: namedType('address'), format: formatInputInt },
 | 
				
			||||||
        { type: namedType('bool'), format: formatInputBool }
 | 
					        { type: namedType('bool'), format: formatInputBool }
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
@@ -187,13 +194,19 @@ var toAbiInput = function (json, methodName, params) {
 | 
				
			|||||||
    return bytes;
 | 
					    return bytes;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Check if input value is negative
 | 
				
			||||||
 | 
					/// @param value is hex format
 | 
				
			||||||
 | 
					/// @returns true if it is negative, otherwise false
 | 
				
			||||||
 | 
					var signedIsNegative = function (value) {
 | 
				
			||||||
 | 
					    return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1';
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Formats input right-aligned input bytes to int
 | 
					/// Formats input right-aligned input bytes to int
 | 
				
			||||||
/// @returns right-aligned input bytes formatted to int
 | 
					/// @returns right-aligned input bytes formatted to int
 | 
				
			||||||
var formatOutputInt = function (value) {
 | 
					var formatOutputInt = function (value) {
 | 
				
			||||||
    // check if it's negative number
 | 
					    // check if it's negative number
 | 
				
			||||||
    // it it is, return two's complement
 | 
					    // it it is, return two's complement
 | 
				
			||||||
    var firstBit = new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1);
 | 
					    if (signedIsNegative(value)) {
 | 
				
			||||||
    if (firstBit === '1') {
 | 
					 | 
				
			||||||
        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
 | 
					        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return new BigNumber(value, 16);
 | 
					    return new BigNumber(value, 16);
 | 
				
			||||||
@@ -205,6 +218,16 @@ var formatOutputUInt = function (value) {
 | 
				
			|||||||
    return new BigNumber(value, 16);
 | 
					    return new BigNumber(value, 16);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @returns input bytes formatted to real
 | 
				
			||||||
 | 
					var formatOutputReal = function (value) {
 | 
				
			||||||
 | 
					    return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @returns input bytes formatted to ureal
 | 
				
			||||||
 | 
					var formatOutputUReal = function (value) {
 | 
				
			||||||
 | 
					    return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @returns right-aligned input bytes formatted to hex
 | 
					/// @returns right-aligned input bytes formatted to hex
 | 
				
			||||||
var formatOutputHash = function (value) {
 | 
					var formatOutputHash = function (value) {
 | 
				
			||||||
    return "0x" + value;
 | 
					    return "0x" + value;
 | 
				
			||||||
@@ -240,8 +263,8 @@ var setupOutputTypes = function () {
 | 
				
			|||||||
        { type: prefixedType('int'), format: formatOutputInt },
 | 
					        { type: prefixedType('int'), format: formatOutputInt },
 | 
				
			||||||
        { type: prefixedType('hash'), format: formatOutputHash },
 | 
					        { type: prefixedType('hash'), format: formatOutputHash },
 | 
				
			||||||
        { type: prefixedType('string'), format: formatOutputString },
 | 
					        { type: prefixedType('string'), format: formatOutputString },
 | 
				
			||||||
        { type: prefixedType('real'), format: formatOutputInt },
 | 
					        { type: prefixedType('real'), format: formatOutputReal },
 | 
				
			||||||
        { type: prefixedType('ureal'), format: formatOutputInt },
 | 
					        { type: prefixedType('ureal'), format: formatOutputUReal },
 | 
				
			||||||
        { type: namedType('address'), format: formatOutputAddress },
 | 
					        { type: namedType('address'), format: formatOutputAddress },
 | 
				
			||||||
        { type: namedType('bool'), format: formatOutputBool }
 | 
					        { type: namedType('bool'), format: formatOutputBool }
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
@@ -387,10 +410,9 @@ module.exports = {
 | 
				
			|||||||
 * if it fails, it uses HttpRpcProvider
 | 
					 * if it fails, it uses HttpRpcProvider
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: is these line is supposed to be here? 
 | 
					var web3 = require('./web3'); // jshint ignore:line
 | 
				
			||||||
if ("build" !== 'build') {/*
 | 
					if ("build" !== 'build') {/*
 | 
				
			||||||
    var WebSocket = require('ws'); // jshint ignore:line
 | 
					    var WebSocket = require('ws'); // jshint ignore:line
 | 
				
			||||||
    var web3 = require('./web3'); // jshint ignore:line
 | 
					 | 
				
			||||||
*/}
 | 
					*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -433,7 +455,7 @@ var AutoProvider = function (userOptions) {
 | 
				
			|||||||
            self.poll = self.provider.poll.bind(self.provider);
 | 
					            self.poll = self.provider.poll.bind(self.provider);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        self.sendQueue.forEach(function (payload) {
 | 
					        self.sendQueue.forEach(function (payload) {
 | 
				
			||||||
            self.provider(payload);
 | 
					            self.provider.send(payload);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        self.onmessageQueue.forEach(function (handler) {
 | 
					        self.onmessageQueue.forEach(function (handler) {
 | 
				
			||||||
            self.provider.onmessage = handler;
 | 
					            self.provider.onmessage = handler;
 | 
				
			||||||
@@ -474,7 +496,7 @@ Object.defineProperty(AutoProvider.prototype, 'onmessage', {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
module.exports = AutoProvider;
 | 
					module.exports = AutoProvider;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
},{}],3:[function(require,module,exports){
 | 
					},{"./web3":8}],3:[function(require,module,exports){
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
    This file is part of ethereum.js.
 | 
					    This file is part of ethereum.js.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -807,7 +829,6 @@ module.exports = HttpRpcProvider;
 | 
				
			|||||||
 * @date 2014
 | 
					 * @date 2014
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: is these line is supposed to be here? 
 | 
					 | 
				
			||||||
var web3 = require('./web3'); // jshint ignore:line
 | 
					var web3 = require('./web3'); // jshint ignore:line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								dist/ethereum.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/ethereum.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/ethereum.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/ethereum.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										35
									
								
								lib/abi.js
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								lib/abi.js
									
									
									
									
									
								
							@@ -116,6 +116,13 @@ var formatInputBool = function (value) {
 | 
				
			|||||||
    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
 | 
					    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Formats input value to byte representation of real
 | 
				
			||||||
 | 
					/// Values are multiplied by 2^m and encoded as integers
 | 
				
			||||||
 | 
					/// @returns byte representation of real
 | 
				
			||||||
 | 
					var formatInputReal = function (value) {
 | 
				
			||||||
 | 
					    return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var dynamicTypeBytes = function (type, value) {
 | 
					var dynamicTypeBytes = function (type, value) {
 | 
				
			||||||
    // TODO: decide what to do with array of strings
 | 
					    // TODO: decide what to do with array of strings
 | 
				
			||||||
    if (arrayType(type) || prefixedType('string')(type))
 | 
					    if (arrayType(type) || prefixedType('string')(type))
 | 
				
			||||||
@@ -132,8 +139,8 @@ var setupInputTypes = function () {
 | 
				
			|||||||
        { type: prefixedType('int'), format: formatInputInt },
 | 
					        { type: prefixedType('int'), format: formatInputInt },
 | 
				
			||||||
        { type: prefixedType('hash'), format: formatInputInt },
 | 
					        { type: prefixedType('hash'), format: formatInputInt },
 | 
				
			||||||
        { type: prefixedType('string'), format: formatInputString }, 
 | 
					        { type: prefixedType('string'), format: formatInputString }, 
 | 
				
			||||||
        { type: prefixedType('real'), format: formatInputInt },
 | 
					        { type: prefixedType('real'), format: formatInputReal },
 | 
				
			||||||
        { type: prefixedType('ureal'), format: formatInputInt },
 | 
					        { type: prefixedType('ureal'), format: formatInputReal },
 | 
				
			||||||
        { type: namedType('address'), format: formatInputInt },
 | 
					        { type: namedType('address'), format: formatInputInt },
 | 
				
			||||||
        { type: namedType('bool'), format: formatInputBool }
 | 
					        { type: namedType('bool'), format: formatInputBool }
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
@@ -186,13 +193,19 @@ var toAbiInput = function (json, methodName, params) {
 | 
				
			|||||||
    return bytes;
 | 
					    return bytes;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Check if input value is negative
 | 
				
			||||||
 | 
					/// @param value is hex format
 | 
				
			||||||
 | 
					/// @returns true if it is negative, otherwise false
 | 
				
			||||||
 | 
					var signedIsNegative = function (value) {
 | 
				
			||||||
 | 
					    return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1';
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Formats input right-aligned input bytes to int
 | 
					/// Formats input right-aligned input bytes to int
 | 
				
			||||||
/// @returns right-aligned input bytes formatted to int
 | 
					/// @returns right-aligned input bytes formatted to int
 | 
				
			||||||
var formatOutputInt = function (value) {
 | 
					var formatOutputInt = function (value) {
 | 
				
			||||||
    // check if it's negative number
 | 
					    // check if it's negative number
 | 
				
			||||||
    // it it is, return two's complement
 | 
					    // it it is, return two's complement
 | 
				
			||||||
    var firstBit = new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1);
 | 
					    if (signedIsNegative(value)) {
 | 
				
			||||||
    if (firstBit === '1') {
 | 
					 | 
				
			||||||
        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
 | 
					        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return new BigNumber(value, 16);
 | 
					    return new BigNumber(value, 16);
 | 
				
			||||||
@@ -204,6 +217,16 @@ var formatOutputUInt = function (value) {
 | 
				
			|||||||
    return new BigNumber(value, 16);
 | 
					    return new BigNumber(value, 16);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @returns input bytes formatted to real
 | 
				
			||||||
 | 
					var formatOutputReal = function (value) {
 | 
				
			||||||
 | 
					    return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @returns input bytes formatted to ureal
 | 
				
			||||||
 | 
					var formatOutputUReal = function (value) {
 | 
				
			||||||
 | 
					    return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); 
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @returns right-aligned input bytes formatted to hex
 | 
					/// @returns right-aligned input bytes formatted to hex
 | 
				
			||||||
var formatOutputHash = function (value) {
 | 
					var formatOutputHash = function (value) {
 | 
				
			||||||
    return "0x" + value;
 | 
					    return "0x" + value;
 | 
				
			||||||
@@ -239,8 +262,8 @@ var setupOutputTypes = function () {
 | 
				
			|||||||
        { type: prefixedType('int'), format: formatOutputInt },
 | 
					        { type: prefixedType('int'), format: formatOutputInt },
 | 
				
			||||||
        { type: prefixedType('hash'), format: formatOutputHash },
 | 
					        { type: prefixedType('hash'), format: formatOutputHash },
 | 
				
			||||||
        { type: prefixedType('string'), format: formatOutputString },
 | 
					        { type: prefixedType('string'), format: formatOutputString },
 | 
				
			||||||
        { type: prefixedType('real'), format: formatOutputInt },
 | 
					        { type: prefixedType('real'), format: formatOutputReal },
 | 
				
			||||||
        { type: prefixedType('ureal'), format: formatOutputInt },
 | 
					        { type: prefixedType('ureal'), format: formatOutputUReal },
 | 
				
			||||||
        { type: namedType('address'), format: formatOutputAddress },
 | 
					        { type: namedType('address'), format: formatOutputAddress },
 | 
				
			||||||
        { type: namedType('bool'), format: formatOutputBool }
 | 
					        { type: namedType('bool'), format: formatOutputBool }
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,10 +27,9 @@
 | 
				
			|||||||
 * if it fails, it uses HttpRpcProvider
 | 
					 * if it fails, it uses HttpRpcProvider
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: is these line is supposed to be here? 
 | 
					var web3 = require('./web3'); // jshint ignore:line
 | 
				
			||||||
if (process.env.NODE_ENV !== 'build') {
 | 
					if (process.env.NODE_ENV !== 'build') {
 | 
				
			||||||
    var WebSocket = require('ws'); // jshint ignore:line
 | 
					    var WebSocket = require('ws'); // jshint ignore:line
 | 
				
			||||||
    var web3 = require('./web3'); // jshint ignore:line
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -73,7 +72,7 @@ var AutoProvider = function (userOptions) {
 | 
				
			|||||||
            self.poll = self.provider.poll.bind(self.provider);
 | 
					            self.poll = self.provider.poll.bind(self.provider);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        self.sendQueue.forEach(function (payload) {
 | 
					        self.sendQueue.forEach(function (payload) {
 | 
				
			||||||
            self.provider(payload);
 | 
					            self.provider.send(payload);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        self.onmessageQueue.forEach(function (handler) {
 | 
					        self.onmessageQueue.forEach(function (handler) {
 | 
				
			||||||
            self.provider.onmessage = handler;
 | 
					            self.provider.onmessage = handler;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,6 @@
 | 
				
			|||||||
 * @date 2014
 | 
					 * @date 2014
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: is these line is supposed to be here? 
 | 
					 | 
				
			||||||
var web3 = require('./web3'); // jshint ignore:line
 | 
					var web3 = require('./web3'); // jshint ignore:line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -380,6 +380,45 @@ describe('abi', function() {
 | 
				
			|||||||
                );
 | 
					                );
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it('should parse input real', function () {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // given
 | 
				
			||||||
 | 
					            var d = clone(description);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            d[0].inputs = [
 | 
				
			||||||
 | 
					                { type: 'real' }
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // when
 | 
				
			||||||
 | 
					            var parser = abi.inputParser(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // then
 | 
				
			||||||
 | 
					            assert.equal(parser.test([1]),      "0000000000000000000000000000000100000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test([2.125]),  "0000000000000000000000000000000220000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test([8.5]),    "0000000000000000000000000000000880000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test([-1]),     "ffffffffffffffffffffffffffffffff00000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        it('should parse input ureal', function () {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // given
 | 
				
			||||||
 | 
					            var d = clone(description);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            d[0].inputs = [
 | 
				
			||||||
 | 
					                { type: 'ureal' }
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // when
 | 
				
			||||||
 | 
					            var parser = abi.inputParser(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // then
 | 
				
			||||||
 | 
					            assert.equal(parser.test([1]),      "0000000000000000000000000000000100000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test([2.125]),  "0000000000000000000000000000000220000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test([8.5]),    "0000000000000000000000000000000880000000000000000000000000000000"); 
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    describe('outputParser', function() {
 | 
					    describe('outputParser', function() {
 | 
				
			||||||
@@ -633,12 +672,52 @@ describe('abi', function() {
 | 
				
			|||||||
            var parser = abi.outputParser(d);
 | 
					            var parser = abi.outputParser(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // then
 | 
					            // then
 | 
				
			||||||
            assert.equal(parser.test("000000000000000000000000000000000000000000000000000000000000000001")[0], true);
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], true);
 | 
				
			||||||
            assert.equal(parser.test("000000000000000000000000000000000000000000000000000000000000000000")[0], false);
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000000")[0], false);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it('should parse output real', function() {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // given
 | 
				
			||||||
 | 
					            var d = clone(description); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            d[0].outputs = [
 | 
				
			||||||
 | 
					                { type: 'real' }
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // when
 | 
				
			||||||
 | 
					            var parser = abi.outputParser(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // then
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000100000000000000000000000000000000")[0], 1);
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000220000000000000000000000000000000")[0], 2.125); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000880000000000000000000000000000000")[0], 8.5); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0xffffffffffffffffffffffffffffffff00000000000000000000000000000000")[0], -1); 
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it('should parse output ureal', function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // given
 | 
				
			||||||
 | 
					            var d = clone(description); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            d[0].outputs = [
 | 
				
			||||||
 | 
					                { type: 'ureal' }
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // when
 | 
				
			||||||
 | 
					            var parser = abi.outputParser(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // then
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000100000000000000000000000000000000")[0], 1);
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000220000000000000000000000000000000")[0], 2.125); 
 | 
				
			||||||
 | 
					            assert.equal(parser.test("0x0000000000000000000000000000000880000000000000000000000000000000")[0], 8.5); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        it('should parse multiple output strings', function() {
 | 
					        it('should parse multiple output strings', function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // given
 | 
					            // given
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user