github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/types/codec_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/tendermint/go-amino"
     9  )
    10  
    11  func TestUnmarshalChainConfigFromAmino(t *testing.T) {
    12  	config := &ChainConfig{
    13  		HomesteadBlock:      sdk.OneInt(),
    14  		DAOForkBlock:        sdk.OneInt(),
    15  		DAOForkSupport:      true,
    16  		EIP150Block:         sdk.OneInt(),
    17  		EIP150Hash:          defaultEIP150Hash,
    18  		EIP155Block:         sdk.OneInt(),
    19  		EIP158Block:         sdk.OneInt(),
    20  		ByzantiumBlock:      sdk.OneInt(),
    21  		ConstantinopleBlock: sdk.OneInt(),
    22  		PetersburgBlock:     sdk.OneInt(),
    23  		IstanbulBlock:       sdk.OneInt(),
    24  		MuirGlacierBlock:    sdk.ZeroInt(),
    25  		YoloV2Block:         sdk.OneInt(),
    26  		EWASMBlock:          sdk.OneInt(),
    27  	}
    28  	cdc := amino.NewCodec()
    29  	RegisterCodec(cdc)
    30  
    31  	data, err := cdc.MarshalBinaryBare(config)
    32  	require.NoError(t, err)
    33  
    34  	var configFromAmino ChainConfig
    35  	err = cdc.UnmarshalBinaryBare(data, &configFromAmino)
    36  	require.NoError(t, err)
    37  
    38  	var configFromUnmarshaller ChainConfig
    39  	configi, err := cdc.UnmarshalBinaryBareWithRegisteredUnmarshaller(data, &configFromUnmarshaller)
    40  	require.NoError(t, err)
    41  	configFromUnmarshaller = configi.(ChainConfig)
    42  
    43  	require.EqualValues(t, configFromAmino, configFromUnmarshaller)
    44  }
    45  
    46  func BenchmarkUnmarshalChainConfigFromAmino(b *testing.B) {
    47  	config := &ChainConfig{
    48  		HomesteadBlock:      sdk.OneInt(),
    49  		DAOForkBlock:        sdk.OneInt(),
    50  		EIP150Block:         sdk.OneInt(),
    51  		EIP150Hash:          defaultEIP150Hash,
    52  		EIP155Block:         sdk.OneInt(),
    53  		EIP158Block:         sdk.OneInt(),
    54  		ByzantiumBlock:      sdk.OneInt(),
    55  		ConstantinopleBlock: sdk.OneInt(),
    56  		PetersburgBlock:     sdk.OneInt(),
    57  		IstanbulBlock:       sdk.OneInt(),
    58  		MuirGlacierBlock:    sdk.OneInt(),
    59  		YoloV2Block:         sdk.OneInt(),
    60  		EWASMBlock:          sdk.OneInt(),
    61  	}
    62  	cdc := amino.NewCodec()
    63  	RegisterCodec(cdc)
    64  
    65  	data, _ := cdc.MarshalBinaryBare(config)
    66  
    67  	b.ResetTimer()
    68  	b.ReportAllocs()
    69  
    70  	b.Run("amino", func(b *testing.B) {
    71  		for i := 0; i < b.N; i++ {
    72  			var config ChainConfig
    73  			_ = cdc.UnmarshalBinaryBare(data, &config)
    74  		}
    75  	})
    76  
    77  	b.Run("unmarshaller", func(b *testing.B) {
    78  		for i := 0; i < b.N; i++ {
    79  			var config ChainConfig
    80  			_config, _ := cdc.UnmarshalBinaryBareWithRegisteredUnmarshaller(data, &config)
    81  			config = _config.(ChainConfig)
    82  		}
    83  	})
    84  }