mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
72dc1c76fd
d5d2115 example contract using array, fixed #185 21ed235 removed connection keep-alive c44fe01 version 0.7.1 d9b785e fixed #248 490dde5 fixed encoding/decoding strings, #249 b3f5d09 fixed long bytes dynamic decoding/encoding, #249 d097821 small filter improvement d59b1cd removed xhr from browser 42b6e9d version 0.7.0 fe6defd gulp 44dcd24 set connection keepalive 2b17c0f gulpfile changes 4a46c73 Merge pull request #228 from ethereum/strings 93c8006 tests for encoding and decoding prematurely terminated strings and strings containing internal zeros 7dd44e7 Merge branch 'strings' of https://github.com/ethereum/ethereum.js into strings 390a9ff Merge branch 'develop' into strings bcd9cfb updated deps, removed unused karma ef15fc1 Merge pull request #244 from ethereum/allevents 6f74d57 Merge branch 'develop' into allevents 7aca17e Merge branch 'develop' into allevents c5ee34d fix for optional event parameters 8170a0a Merge pull request #245 from ethereum/filterInstantWatch 76a094c fixed all issues noted by marek d78b512 add possible callback to filters e1b17a9 re-build develop af9c027 all events filter b270616 version 0.6.1 c47d6a8 gulp 7cf7cf3 map file 6da1d3e gulp 450042e Update eth.js 3951286 Added sendRawTransaction 323b529 merged develop 16ffdf6 merged master ecf0a2c changed | to Math.floor d2b5ba2 Merge pull request #239 from ethereum/mistFixes 9e6bf9d removed browser XHR 9061116 fixed build issues in formatInputDynamicBytes 0e3b29c fixed coverage issue d51e9a2 merged latest develop f0247aa made meteor package available on the server side as well e97c5f5 fixed and tested meteor package init 3e49f56 add currentProvidor and mist fixes bd6d9ba merged develop 7b730b1 Merge branch 'strings' of github.com:ethereum/web3.js into strings cc533d9 fixed bytes wrong encoding 8c6f976 Merge branch 'develop' into strings 7c970e3 add bytes32 test with leading 0 9c7f7bb re-add .map files 189484f add extra int tests 73cc711 Merge branch 'develop' into strings fa3239f abi string type, fixes #216, #218, #219 git-subtree-dir: libjsqrc/ethereumjs git-subtree-split: d5d2115bf9ad07a736a189e1022b7d3a549e4006
211 lines
23 KiB
JavaScript
211 lines
23 KiB
JavaScript
var chai = require('chai');
|
|
var assert = chai.assert;
|
|
var coder = require('../lib/solidity/coder');
|
|
|
|
|
|
describe('lib/solidity/coder', function () {
|
|
describe('encodeParam', function () {
|
|
var test = function (t) {
|
|
it('should turn ' + t.value + ' to ' + t.expected, function () {
|
|
assert.equal(coder.encodeParam(t.type, t.value), t.expected);
|
|
});
|
|
};
|
|
|
|
|
|
test({ type: 'int', value: 1, expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
|
test({ type: 'int', value: 16, expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
|
test({ type: 'int', value: -1, expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
|
test({ type: 'int', value: 0.1, expected: '0000000000000000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'int', value: 3.9, expected: '0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ type: 'int256', value: 1, expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
|
test({ type: 'int256', value: 16, expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
|
test({ type: 'int256', value: -1, expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
|
test({ type: 'bytes32', value: '0x6761766f66796f726b',
|
|
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ type: 'bytes32', value: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
expected: '731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
|
test({ type: 'bytes32', value: '0x02838654a83c213dae3698391eabbd54a5b6e1fb3452bc7fa4ea0dd5c8ce7e29',
|
|
expected: '02838654a83c213dae3698391eabbd54a5b6e1fb3452bc7fa4ea0dd5c8ce7e29'});
|
|
test({ type: 'bytes', value: '0x6761766f66796f726b',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ type: 'bytes', value: '0x731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'731a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
|
test({ type: 'string', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ type: 'bytes', value: '0xc3a40000c3a4',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000006' +
|
|
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'bytes32', value: '0xc3a40000c3a4',
|
|
expected: 'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'string', value: '\xc3\xa4\x00\x00\xc3\xa4',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000006' +
|
|
'c3a40000c3a40000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'string', value: '\xc3',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'c300000000000000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'int[]', value: [], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'int[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ type: 'int256[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ type: 'int[]', value: [1,2,3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ type: 'bool', value: true, expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
|
test({ type: 'bool', value: false, expected: '0000000000000000000000000000000000000000000000000000000000000000'});
|
|
test({ type: 'address', value: '0x407d73d8a49eeb85d32cf465507dd71d507100c1',
|
|
expected: '000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1'});
|
|
test({ type: 'real', value: 1, expected: '0000000000000000000000000000000100000000000000000000000000000000'});
|
|
test({ type: 'real', value: 2.125, expected: '0000000000000000000000000000000220000000000000000000000000000000'});
|
|
test({ type: 'real', value: 8.5, expected: '0000000000000000000000000000000880000000000000000000000000000000'});
|
|
test({ type: 'real', value: -1, expected: 'ffffffffffffffffffffffffffffffff00000000000000000000000000000000'});
|
|
test({ type: 'ureal', value: 1, expected: '0000000000000000000000000000000100000000000000000000000000000000'});
|
|
test({ type: 'ureal', value: 2.125, expected: '0000000000000000000000000000000220000000000000000000000000000000'});
|
|
test({ type: 'ureal', value: 8.5, expected: '0000000000000000000000000000000880000000000000000000000000000000'});
|
|
test({ type: 'bytes', value: '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
|
test({ type: 'bytes', value: '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000060' +
|
|
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
|
test({ type: 'string', value: 'welcome to ethereum. welcome to ethereum. welcome to ethereum.',
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'000000000000000000000000000000000000000000000000000000000000003e' +
|
|
'77656c636f6d6520746f20657468657265756d2e2077656c636f6d6520746f20' +
|
|
'657468657265756d2e2077656c636f6d6520746f20657468657265756d2e0000'});
|
|
});
|
|
});
|
|
|
|
|
|
describe('lib/solidity/coder', function () {
|
|
describe('encodeParams', function () {
|
|
var test = function (t) {
|
|
it('should turn ' + t.values + ' to ' + t.expected, function () {
|
|
assert.equal(coder.encodeParams(t.types, t.values), t.expected);
|
|
});
|
|
};
|
|
|
|
|
|
test({ types: ['int'], values: [1], expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
|
test({ types: ['int'], values: [16], expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
|
test({ types: ['int'], values: [-1], expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
|
test({ types: ['int256'], values: [1], expected: '0000000000000000000000000000000000000000000000000000000000000001'});
|
|
test({ types: ['int256'], values: [16], expected: '0000000000000000000000000000000000000000000000000000000000000010'});
|
|
test({ types: ['int256'], values: [-1], expected: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'});
|
|
test({ types: ['bytes32'], values: ['0x6761766f66796f726b'],
|
|
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ types: ['string'], values: ['gavofyork'], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ types: ['int[]'], values: [[3]], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ types: ['int256[]'], values: [[3]], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ types: ['int256[]'], values: [[1,2,3]], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ types: ['int[]', 'int[]'], values: [[1,2], [3,4]],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'00000000000000000000000000000000000000000000000000000000000000a0' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000004'});
|
|
test({ types: ['bytes32', 'int'], values: ['0x6761766f66796f726b', 5],
|
|
expected: '6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
|
'0000000000000000000000000000000000000000000000000000000000000005'});
|
|
test({ types: ['int', 'bytes32'], values: [5, '0x6761766f66796f726b'],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ types: ['string', 'int'], values: ['gavofyork', 5],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'0000000000000000000000000000000000000000000000000000000000000005' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ types: ['string', 'bool', 'int[]'], values: ['gavofyork', true, [1, 2, 3]],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000060' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'00000000000000000000000000000000000000000000000000000000000000a0' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ types: ['string', 'int[]'], values: ['gavofyork', [1, 2, 3]],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'0000000000000000000000000000000000000000000000000000000000000080' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003'});
|
|
test({ types: ['int', 'string'], values: [5, 'gavofyork'],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
|
'0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
|
test({ types: ['int', 'string', 'int', 'int', 'int', 'int[]'], values: [1, 'gavofyork', 2, 3, 4, [5, 6, 7]],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000001' +
|
|
'00000000000000000000000000000000000000000000000000000000000000c0' +
|
|
'0000000000000000000000000000000000000000000000000000000000000002' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000004' +
|
|
'0000000000000000000000000000000000000000000000000000000000000100' +
|
|
'0000000000000000000000000000000000000000000000000000000000000009' +
|
|
'6761766f66796f726b0000000000000000000000000000000000000000000000' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'0000000000000000000000000000000000000000000000000000000000000005' +
|
|
'0000000000000000000000000000000000000000000000000000000000000006' +
|
|
'0000000000000000000000000000000000000000000000000000000000000007'});
|
|
test({ types: ['int', 'bytes', 'int', 'bytes'], values: [
|
|
5,
|
|
'0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
3,
|
|
'0x331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b',
|
|
],
|
|
expected: '0000000000000000000000000000000000000000000000000000000000000005' +
|
|
'0000000000000000000000000000000000000000000000000000000000000080' +
|
|
'0000000000000000000000000000000000000000000000000000000000000003' +
|
|
'00000000000000000000000000000000000000000000000000000000000000e0' +
|
|
'0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'231a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'0000000000000000000000000000000000000000000000000000000000000040' +
|
|
'331a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b' +
|
|
'431a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'});
|
|
});
|
|
});
|
|
|
|
|