web3.js/test/event.decode.js
2017-02-08 10:03:12 +01:00

215 lines
5.7 KiB
JavaScript

var chai = require('chai');
var assert = chai.assert;
var Eth = require('../packages/web3-eth/');
var name = 'event1';
var address = '0xffddb67890123456789012345678901234567890';
var resultAddress = '0xffdDb67890123456789012345678901234567890';
var tests = [{
abi: {
name: name,
type: 'event',
inputs: []
},
data: {
logIndex: '0x1',
transactionIndex: '0x10',
transactionHash: '0x1234567890',
address: address,
blockHash: '0x1234567890',
blockNumber: '0x1'
},
expected: {
event: name,
returnValues: {},
logIndex: 1,
transactionIndex: 16,
transactionHash: '0x1234567890',
address: resultAddress,
blockHash: '0x1234567890',
blockNumber: 1,
id: "log_c71f2e84",
raw: {
topics: [],
data: ''
}
}
}, {
abi: {
name: name,
inputs: [{
name: 'a',
type: 'int',
indexed: false
}]
},
data: {
logIndex: '0x1',
transactionIndex: '0x10',
transactionHash: '0x1234567890',
address: address,
blockHash: '0x1234567890',
blockNumber: '0x1',
data: '0x0000000000000000000000000000000000000000000000000000000000000001'
},
expected: {
event: name,
returnValues: {
a: '1'
},
logIndex: 1,
transactionIndex: 16,
transactionHash: '0x1234567890',
address: resultAddress,
blockHash: '0x1234567890',
blockNumber: 1,
id: "log_c71f2e84",
raw: {
data: "0x0000000000000000000000000000000000000000000000000000000000000001",
topics: []
}
}
}, {
abi: {
name: name,
inputs: [{
name: 'a',
type: 'int',
indexed: false
}, {
name: 'b',
type: 'int',
indexed: true
}, {
name: 'c',
type: 'int',
indexed: false
}, {
name: 'd',
type: 'int',
indexed: true
}]
},
data: {
logIndex: '0x1',
transactionIndex: '0x10',
transactionHash: '0x1234567890',
address: address,
blockHash: '0x1234567890',
blockNumber: '0x1',
data: '0x' +
'0000000000000000000000000000000000000000000000000000000000000001' +
'0000000000000000000000000000000000000000000000000000000000000004',
topics: [
address,
'0x000000000000000000000000000000000000000000000000000000000000000a',
'0x0000000000000000000000000000000000000000000000000000000000000010'
]
},
expected: {
event: name,
returnValues: {
a: '1',
b: '10',
c: '4',
d: '16'
},
logIndex: 1,
transactionIndex: 16,
transactionHash: '0x1234567890',
address: resultAddress,
blockHash: '0x1234567890',
blockNumber: 1,
id: "log_c71f2e84",
raw: {
data: '0x' +
'0000000000000000000000000000000000000000000000000000000000000001' +
'0000000000000000000000000000000000000000000000000000000000000004',
topics: [
address,
'0x000000000000000000000000000000000000000000000000000000000000000a',
'0x0000000000000000000000000000000000000000000000000000000000000010'
]
}
}
}, {
abi: {
name: name,
anonymous: true,
inputs: [{
name: 'a',
type: 'int',
indexed: false
}, {
name: 'b',
type: 'int',
indexed: true
}, {
name: 'c',
type: 'int',
indexed: false
}, {
name: 'd',
type: 'int',
indexed: true
}]
},
data: {
logIndex: '0x1',
transactionIndex: '0x10',
transactionHash: '0x1234567890',
address: resultAddress,
blockHash: '0x1234567890',
blockNumber: '0x1',
data: '0x' +
'0000000000000000000000000000000000000000000000000000000000000001' +
'0000000000000000000000000000000000000000000000000000000000000004',
topics: [
'0x000000000000000000000000000000000000000000000000000000000000000a',
'0x0000000000000000000000000000000000000000000000000000000000000010'
]
},
expected: {
event: name,
returnValues: {
a: '1',
b: '10',
c: '4',
d: '16'
},
logIndex: 1,
transactionIndex: 16,
transactionHash: '0x1234567890',
address: resultAddress,
blockHash: '0x1234567890',
blockNumber: 1,
id: "log_c71f2e84",
raw: {
data: '0x' +
'0000000000000000000000000000000000000000000000000000000000000001' +
'0000000000000000000000000000000000000000000000000000000000000004',
topics: [
'0x000000000000000000000000000000000000000000000000000000000000000a',
'0x0000000000000000000000000000000000000000000000000000000000000010'
]
}
}
}];
describe('lib/web3/event', function () {
describe('decode', function () {
tests.forEach(function (test, index) {
it('test no: ' + index, function () {
var eth = new Eth();
var contract = new eth.Contract([test.abi], address);
var result = contract._decodeEventABI.call(test.abi, test.data);
assert.deepEqual(result, test.expected);
});
});
});
});