Merge commit 'd876522bc0614fea3180a54be57bcb61784b352e' into ethereumjs
This commit is contained in:
commit
de4ea8e6f4
41
dist/ethereum.js
vendored
41
dist/ethereum.js
vendored
@ -27,6 +27,8 @@ if ("build" !== 'build') {/*
|
|||||||
var web3 = require('./web3'); // jshint ignore:line
|
var web3 = require('./web3'); // jshint ignore:line
|
||||||
*/}
|
*/}
|
||||||
|
|
||||||
|
var BigNumber = require('bignumber.js');
|
||||||
|
|
||||||
// TODO: make these be actually accurate instead of falling back onto JS's doubles.
|
// TODO: make these be actually accurate instead of falling back onto JS's doubles.
|
||||||
var hexToDec = function (hex) {
|
var hexToDec = function (hex) {
|
||||||
return parseInt(hex, 16).toString();
|
return parseInt(hex, 16).toString();
|
||||||
@ -85,24 +87,26 @@ var namedType = function (name) {
|
|||||||
var setupInputTypes = function () {
|
var setupInputTypes = function () {
|
||||||
|
|
||||||
/// Formats input value to byte representation of int
|
/// Formats input value to byte representation of int
|
||||||
|
/// If value is negative, return it's two's complement
|
||||||
/// @returns right-aligned byte representation of int
|
/// @returns right-aligned byte representation of int
|
||||||
var formatInt = function (value) {
|
var formatInt = function (value) {
|
||||||
var padding = 32 * 2;
|
var padding = 32 * 2;
|
||||||
if (typeof value === 'number') {
|
if (value instanceof BigNumber) {
|
||||||
if (value < 0) {
|
if (value.lessThan(0))
|
||||||
|
value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1).toString(16);
|
||||||
// two's complement
|
else
|
||||||
// TODO: fix big numbers support
|
value = value.toString(16);
|
||||||
value = ((value) >>> 0).toString(16);
|
}
|
||||||
return padLeft(value, padding, 'f');
|
else if (typeof value === 'number') {
|
||||||
}
|
if (value < 0)
|
||||||
value = value.toString(16);
|
value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1).toString(16);
|
||||||
|
else
|
||||||
|
value = new BigNumber(value).toString(16);
|
||||||
}
|
}
|
||||||
else if (value.indexOf('0x') === 0)
|
else if (value.indexOf('0x') === 0)
|
||||||
value = value.substr(2);
|
value = value.substr(2);
|
||||||
else if (typeof value === 'string')
|
else if (typeof value === 'string')
|
||||||
value = value.toHex(value);
|
value = new BigNumber(value).toString(16);
|
||||||
else
|
else
|
||||||
value = (+value).toString(16);
|
value = (+value).toString(16);
|
||||||
return padLeft(value, padding);
|
return padLeft(value, padding);
|
||||||
@ -172,7 +176,16 @@ var setupOutputTypes = function () {
|
|||||||
/// 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 formatInt = function (value) {
|
var formatInt = function (value) {
|
||||||
return value.length <= 8 ? +parseInt(value, 16) : hexToDec(value);
|
// check if it's negative number
|
||||||
|
// it it is, return two's complement
|
||||||
|
if (value.substr(0, 1).toLowerCase() === 'f') {
|
||||||
|
return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
|
||||||
|
}
|
||||||
|
return new BigNumber(value, 16);
|
||||||
|
};
|
||||||
|
|
||||||
|
var formatUInt = function (value) {
|
||||||
|
return new BigNumber(value, 16);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @returns right-aligned input bytes formatted to hex
|
/// @returns right-aligned input bytes formatted to hex
|
||||||
@ -196,7 +209,7 @@ var setupOutputTypes = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{ type: prefixedType('uint'), format: formatInt },
|
{ type: prefixedType('uint'), format: formatUInt },
|
||||||
{ type: prefixedType('int'), format: formatInt },
|
{ type: prefixedType('int'), format: formatInt },
|
||||||
{ type: prefixedType('hash'), format: formatHash },
|
{ type: prefixedType('hash'), format: formatHash },
|
||||||
{ type: prefixedType('string'), format: formatString },
|
{ type: prefixedType('string'), format: formatString },
|
||||||
@ -295,7 +308,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
},{}],2:[function(require,module,exports){
|
},{"bignumber.js":undefined}],2:[function(require,module,exports){
|
||||||
/*
|
/*
|
||||||
This file is part of ethereum.js.
|
This file is part of ethereum.js.
|
||||||
|
|
||||||
|
4
dist/ethereum.js.map
vendored
4
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
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<script type="text/javascript" src="js/es6-promise/promise.min.js"></script>
|
<script type="text/javascript" src="js/es6-promise/promise.min.js"></script>
|
||||||
|
<script type="text/javascript" src="../node_modules/bignumber.js/bignumber.min.js"></script>
|
||||||
<script type="text/javascript" src="../dist/ethereum.js"></script>
|
<script type="text/javascript" src="../dist/ethereum.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ gulp.task('uglify', ['build'], function(){
|
|||||||
return uglifyFile('ethereum');
|
return uglifyFile('ethereum');
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('uglify', ['buildDev'], function(){
|
gulp.task('uglifyDev', ['buildDev'], function(){
|
||||||
return uglifyFile('ethereum');
|
return uglifyFile('ethereum');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -99,6 +99,6 @@ gulp.task('watch', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('release', ['bower', 'lint', 'build', 'uglify']);
|
gulp.task('release', ['bower', 'lint', 'build', 'uglify']);
|
||||||
gulp.task('dev', ['bower', 'lint', 'buildDev', 'uglify']);
|
gulp.task('dev', ['bower', 'lint', 'buildDev', 'uglifyDev']);
|
||||||
gulp.task('default', ['dev']);
|
gulp.task('default', ['dev']);
|
||||||
|
|
||||||
|
39
lib/abi.js
39
lib/abi.js
@ -26,6 +26,8 @@ if (process.env.NODE_ENV !== 'build') {
|
|||||||
var web3 = require('./web3'); // jshint ignore:line
|
var web3 = require('./web3'); // jshint ignore:line
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var BigNumber = require('bignumber.js');
|
||||||
|
|
||||||
// TODO: make these be actually accurate instead of falling back onto JS's doubles.
|
// TODO: make these be actually accurate instead of falling back onto JS's doubles.
|
||||||
var hexToDec = function (hex) {
|
var hexToDec = function (hex) {
|
||||||
return parseInt(hex, 16).toString();
|
return parseInt(hex, 16).toString();
|
||||||
@ -84,24 +86,26 @@ var namedType = function (name) {
|
|||||||
var setupInputTypes = function () {
|
var setupInputTypes = function () {
|
||||||
|
|
||||||
/// Formats input value to byte representation of int
|
/// Formats input value to byte representation of int
|
||||||
|
/// If value is negative, return it's two's complement
|
||||||
/// @returns right-aligned byte representation of int
|
/// @returns right-aligned byte representation of int
|
||||||
var formatInt = function (value) {
|
var formatInt = function (value) {
|
||||||
var padding = 32 * 2;
|
var padding = 32 * 2;
|
||||||
if (typeof value === 'number') {
|
if (value instanceof BigNumber) {
|
||||||
if (value < 0) {
|
if (value.lessThan(0))
|
||||||
|
value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1).toString(16);
|
||||||
// two's complement
|
else
|
||||||
// TODO: fix big numbers support
|
value = value.toString(16);
|
||||||
value = ((value) >>> 0).toString(16);
|
}
|
||||||
return padLeft(value, padding, 'f');
|
else if (typeof value === 'number') {
|
||||||
}
|
if (value < 0)
|
||||||
value = value.toString(16);
|
value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1).toString(16);
|
||||||
|
else
|
||||||
|
value = new BigNumber(value).toString(16);
|
||||||
}
|
}
|
||||||
else if (value.indexOf('0x') === 0)
|
else if (value.indexOf('0x') === 0)
|
||||||
value = value.substr(2);
|
value = value.substr(2);
|
||||||
else if (typeof value === 'string')
|
else if (typeof value === 'string')
|
||||||
value = value.toHex(value);
|
value = new BigNumber(value).toString(16);
|
||||||
else
|
else
|
||||||
value = (+value).toString(16);
|
value = (+value).toString(16);
|
||||||
return padLeft(value, padding);
|
return padLeft(value, padding);
|
||||||
@ -171,7 +175,16 @@ var setupOutputTypes = function () {
|
|||||||
/// 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 formatInt = function (value) {
|
var formatInt = function (value) {
|
||||||
return value.length <= 8 ? +parseInt(value, 16) : hexToDec(value);
|
// check if it's negative number
|
||||||
|
// it it is, return two's complement
|
||||||
|
if (value.substr(0, 1).toLowerCase() === 'f') {
|
||||||
|
return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
|
||||||
|
}
|
||||||
|
return new BigNumber(value, 16);
|
||||||
|
};
|
||||||
|
|
||||||
|
var formatUInt = function (value) {
|
||||||
|
return new BigNumber(value, 16);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @returns right-aligned input bytes formatted to hex
|
/// @returns right-aligned input bytes formatted to hex
|
||||||
@ -195,7 +208,7 @@ var setupOutputTypes = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{ type: prefixedType('uint'), format: formatInt },
|
{ type: prefixedType('uint'), format: formatUInt },
|
||||||
{ type: prefixedType('int'), format: formatInt },
|
{ type: prefixedType('int'), format: formatInt },
|
||||||
{ type: prefixedType('hash'), format: formatHash },
|
{ type: prefixedType('hash'), format: formatHash },
|
||||||
{ type: prefixedType('string'), format: formatString },
|
{ type: prefixedType('string'), format: formatString },
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es6-promise": "*",
|
"es6-promise": "*",
|
||||||
"ws": "*",
|
"ws": "*",
|
||||||
"xmlhttprequest": "*"
|
"xmlhttprequest": "*",
|
||||||
|
"bignumber.js": ">=2.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": ">=1.3.0",
|
"bower": ">=1.3.0",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
|
var BigNumber = require('bignumber.js');
|
||||||
var abi = require('../lib/abi.js');
|
var abi = require('../lib/abi.js');
|
||||||
var clone = function (object) { return JSON.parse(JSON.stringify(object)); };
|
var clone = function (object) { return JSON.parse(JSON.stringify(object)); };
|
||||||
|
|
||||||
@ -34,6 +35,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
||||||
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -52,6 +61,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
||||||
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -70,6 +87,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
|
||||||
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -91,7 +116,14 @@ describe('abi', function() {
|
|||||||
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
||||||
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse input int128', function() {
|
it('should parse input int128', function() {
|
||||||
@ -112,6 +144,14 @@ describe('abi', function() {
|
|||||||
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
||||||
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -133,6 +173,14 @@ describe('abi', function() {
|
|||||||
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
|
||||||
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -312,6 +360,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10),
|
||||||
|
new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10),
|
||||||
|
new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output uint256', function() {
|
it('should parse output uint256', function() {
|
||||||
@ -329,6 +385,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10),
|
||||||
|
new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10),
|
||||||
|
new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output uint128', function() {
|
it('should parse output uint128', function() {
|
||||||
@ -346,6 +410,14 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10),
|
||||||
|
new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10),
|
||||||
|
new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output int', function() {
|
it('should parse output int', function() {
|
||||||
@ -363,6 +435,8 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
|
||||||
|
assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output int256', function() {
|
it('should parse output int256', function() {
|
||||||
@ -380,6 +454,8 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
|
||||||
|
assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output int128', function() {
|
it('should parse output int128', function() {
|
||||||
@ -397,6 +473,8 @@ describe('abi', function() {
|
|||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
|
||||||
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
|
||||||
|
assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
|
||||||
|
assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output hash', function() {
|
it('should parse output hash', function() {
|
||||||
@ -412,7 +490,10 @@ describe('abi', function() {
|
|||||||
var parser = abi.outputParser(d);
|
var parser = abi.outputParser(d);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0], "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")
|
assert.equal(
|
||||||
|
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
|
||||||
|
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output hash256', function() {
|
it('should parse output hash256', function() {
|
||||||
@ -428,7 +509,10 @@ describe('abi', function() {
|
|||||||
var parser = abi.outputParser(d);
|
var parser = abi.outputParser(d);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0], "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")
|
assert.equal(
|
||||||
|
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
|
||||||
|
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output hash160', function() {
|
it('should parse output hash160', function() {
|
||||||
@ -444,7 +528,10 @@ describe('abi', function() {
|
|||||||
var parser = abi.outputParser(d);
|
var parser = abi.outputParser(d);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0], "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")
|
assert.equal(
|
||||||
|
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
|
||||||
|
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
|
||||||
|
);
|
||||||
// TODO shouldnt' the expected hash be shorter?
|
// TODO shouldnt' the expected hash be shorter?
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -461,7 +548,10 @@ describe('abi', function() {
|
|||||||
var parser = abi.outputParser(d);
|
var parser = abi.outputParser(d);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0], "0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
assert.equal(
|
||||||
|
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
|
||||||
|
"0x407d73d8a49eeb85d32cf465507dd71d507100c1"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse output bool', function() {
|
it('should parse output bool', function() {
|
||||||
@ -497,8 +587,13 @@ describe('abi', function() {
|
|||||||
var parser = abi.outputParser(d);
|
var parser = abi.outputParser(d);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assert.equal(parser.test("0x68656c6c6f000000000000000000000000000000000000000000000000000000776f726c64000000000000000000000000000000000000000000000000000000")[0], 'hello');
|
assert.equal(
|
||||||
assert.equal(parser.test("0x68656c6c6f000000000000000000000000000000000000000000000000000000776f726c64000000000000000000000000000000000000000000000000000000")[1], 'world');
|
parser.test("0x68656c6c6f000000000000000000000000000000000000000000000000000000776f726c64000000000000000000000000000000000000000000000000000000")[0],
|
||||||
|
'hello'
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
parser.test("0x68656c6c6f000000000000000000000000000000000000000000000000000000776f726c64000000000000000000000000000000000000000000000000000000")[1],
|
||||||
|
'world');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user