github.com/baptiste-b-pegasys/quorum/v22@v22.4.2/core/vm/evm_test.go (about)

     1  package vm
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/ethereum/go-ethereum/common"
     7  	"github.com/ethereum/go-ethereum/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  }