github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/core/vm/evm_test.go (about) 1 package vm 2 3 import ( 4 "testing" 5 6 "github.com/kisexp/xdchain/common" 7 "github.com/kisexp/xdchain/params" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestActivePrecompiles(t *testing.T) { 12 tests := []struct { 13 name string 14 evm *EVM 15 want []common.Address 16 }{ 17 { 18 name: "istanbul-plus-quorum-privacy", 19 evm: &EVM{ 20 chainRules: params.Rules{ 21 IsIstanbul: true, 22 IsPrivacyPrecompile: true, 23 }, 24 }, 25 want: []common.Address{ 26 common.BytesToAddress([]byte{1}), 27 common.BytesToAddress([]byte{2}), 28 common.BytesToAddress([]byte{3}), 29 common.BytesToAddress([]byte{4}), 30 common.BytesToAddress([]byte{5}), 31 common.BytesToAddress([]byte{6}), 32 common.BytesToAddress([]byte{7}), 33 common.BytesToAddress([]byte{8}), 34 common.BytesToAddress([]byte{9}), 35 common.QuorumPrivacyPrecompileContractAddress(), 36 }, 37 }, 38 { 39 name: "homestead-plus-quorum-privacy", 40 evm: &EVM{ 41 chainRules: params.Rules{ 42 IsHomestead: true, 43 IsPrivacyPrecompile: true, 44 }, 45 }, 46 want: []common.Address{ 47 common.BytesToAddress([]byte{1}), 48 common.BytesToAddress([]byte{2}), 49 common.BytesToAddress([]byte{3}), 50 common.BytesToAddress([]byte{4}), 51 common.QuorumPrivacyPrecompileContractAddress(), 52 }, 53 }, 54 { 55 name: "istanbul", 56 evm: &EVM{ 57 chainRules: params.Rules{ 58 IsIstanbul: true, 59 IsPrivacyPrecompile: false, 60 }, 61 }, 62 want: []common.Address{ 63 common.BytesToAddress([]byte{1}), 64 common.BytesToAddress([]byte{2}), 65 common.BytesToAddress([]byte{3}), 66 common.BytesToAddress([]byte{4}), 67 common.BytesToAddress([]byte{5}), 68 common.BytesToAddress([]byte{6}), 69 common.BytesToAddress([]byte{7}), 70 common.BytesToAddress([]byte{8}), 71 common.BytesToAddress([]byte{9}), 72 }, 73 }, 74 { 75 name: "homestead", 76 evm: &EVM{ 77 chainRules: params.Rules{ 78 IsHomestead: true, 79 IsPrivacyPrecompile: false, 80 }, 81 }, 82 want: []common.Address{ 83 common.BytesToAddress([]byte{1}), 84 common.BytesToAddress([]byte{2}), 85 common.BytesToAddress([]byte{3}), 86 common.BytesToAddress([]byte{4}), 87 }, 88 }, 89 } 90 91 for _, tt := range tests { 92 t.Run(tt.name, func(t *testing.T) { 93 got := tt.evm.ActivePrecompiles() 94 require.ElementsMatchf(t, tt.want, got, "want: %v, got: %v", tt.want, got) 95 }) 96 } 97 }