Files: 3a9b5f4c35935e1878a5aa201e5d3b00844c7aac / testEnvironment.js
1637 bytesRaw
1 | const Environment = require('./environment.js') |
2 | const U256 = require('./u256.js') |
3 | const Address = require('./address.js') |
4 | const Block = require('./block.js') |
5 | |
6 | module.exports = class TestEnvironment extends Environment { |
7 | constructor (data) { |
8 | super() |
9 | |
10 | if (typeof data === 'string') { |
11 | data = JSON.parse(data) |
12 | } |
13 | |
14 | let self = this |
15 | |
16 | if (data.accounts) { |
17 | data.accounts.forEach((account) => { |
18 | let tmp = account[1] |
19 | self.state.set(new Address(account[0]).toString(), { |
20 | balance: new U256(tmp.balance) |
21 | }) |
22 | }) |
23 | } |
24 | |
25 | if (data.address) { |
26 | self.address = new Address(data.address) |
27 | } |
28 | |
29 | if (data.origin) { |
30 | self.origin = new Address(data.origin) |
31 | } |
32 | |
33 | if (data.caller) { |
34 | self.caller = new Address(data.caller) |
35 | } |
36 | |
37 | if (data.callValue) { |
38 | self.callValue = new U256(data.callValue) |
39 | } |
40 | |
41 | if (data.callData) { |
42 | self.callData = Uint8Array.from(new Buffer(data.callData, 'hex')) |
43 | } |
44 | |
45 | if (data.gasPrice) { |
46 | self.gasPrice = data.gasPrice |
47 | } |
48 | |
49 | if (data.gasLeft) { |
50 | self.gasLeft = data.gasLeft |
51 | } |
52 | |
53 | let block = {} |
54 | |
55 | if (data.blockNumber) { |
56 | block.number = data.blockNumber |
57 | } |
58 | |
59 | if (data.gasLimit) { |
60 | block.gasLimit = data.gasLimit |
61 | } |
62 | |
63 | if (data.difficulty) { |
64 | block.difficulty = adta.difficulty |
65 | } |
66 | |
67 | if (data.timestamp) { |
68 | block.timestamp = data.timestamp |
69 | } |
70 | |
71 | if (data.coinbase) { |
72 | block.coinbase = data.coinbase |
73 | } |
74 | |
75 | if (Object.keys(block).length > 0) { |
76 | self.block = new Block({ header: block, transactions: [], uncleHeaders: [] }) |
77 | } |
78 | } |
79 | } |
80 |
Built with git-ssb-web