@@ -2,13 +2,14 @@ const { promisify } = require('util')
2
2
const tape = require ( 'tape' )
3
3
const util = require ( 'ethereumjs-util' )
4
4
const Block = require ( 'ethereumjs-block' )
5
+ const Trie = require ( 'merkle-patricia-tree/secure' )
5
6
const VM = require ( '../../lib/index' )
6
7
const { setupVM } = require ( './utils' )
7
8
const { setupPreConditions } = require ( '../util' )
8
9
const testData = require ( './testdata.json' )
9
10
10
11
tape ( 'VM with fake blockchain' , ( t ) => {
11
- t . test ( 'should insantiate without params' , ( st ) => {
12
+ t . test ( 'should instantiate without params' , ( st ) => {
12
13
const vm = new VM ( )
13
14
st . ok ( vm . stateManager )
14
15
st . deepEqual ( vm . stateManager . _trie . root , util . KECCAK256_RLP , 'it has default trie' )
@@ -22,6 +23,15 @@ tape('VM with fake blockchain', (t) => {
22
23
st . end ( )
23
24
} )
24
25
26
+ t . test ( 'should work with trie (state) provided' , ( st ) => {
27
+ let trie = new Trie ( )
28
+ trie . isTestTrie = true
29
+ let vm = new VM ( { state : trie , activatePrecompiles : true } )
30
+ st . notEqual ( vm . stateManager . _trie . root , util . KECCAK256_RLP , 'it has different root' )
31
+ st . ok ( vm . stateManager . _trie . isTestTrie , 'it works on trie provided' )
32
+ st . end ( )
33
+ } )
34
+
25
35
t . test ( 'should only accept valid chain and fork' , ( st ) => {
26
36
let vm = new VM ( { chain : 'ropsten' , hardfork : 'byzantium' } )
27
37
st . equal ( vm . stateManager . _common . param ( 'gasPrices' , 'ecAdd' ) , 500 )
0 commit comments