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 }