github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/staking/simulation/decoder_test.go (about) 1 package simulation 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 11 tmkv "github.com/fibonacci-chain/fbc/libs/tendermint/libs/kv" 12 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 14 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 15 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/staking/types" 16 ) 17 18 var ( 19 delPk1 = ed25519.GenPrivKey().PubKey() 20 delAddr1 = sdk.AccAddress(delPk1.Address()) 21 valAddr1 = sdk.ValAddress(delPk1.Address()) 22 ) 23 24 func makeTestCodec() (cdc *codec.Codec) { 25 cdc = codec.New() 26 sdk.RegisterCodec(cdc) 27 codec.RegisterCrypto(cdc) 28 types.RegisterCodec(cdc) 29 return 30 } 31 32 func TestDecodeStore(t *testing.T) { 33 cdc := makeTestCodec() 34 35 bondTime := time.Now().UTC() 36 37 val := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test")) 38 del := types.NewDelegation(delAddr1, valAddr1, sdk.OneDec()) 39 ubd := types.NewUnbondingDelegation(delAddr1, valAddr1, 15, bondTime, sdk.OneInt()) 40 red := types.NewRedelegation(delAddr1, valAddr1, valAddr1, 12, bondTime, sdk.OneInt(), sdk.OneDec()) 41 42 kvPairs := tmkv.Pairs{ 43 tmkv.Pair{Key: types.LastTotalPowerKey, Value: cdc.MustMarshalBinaryLengthPrefixed(sdk.OneInt())}, 44 tmkv.Pair{Key: types.GetValidatorKey(valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(val)}, 45 tmkv.Pair{Key: types.LastValidatorPowerKey, Value: valAddr1.Bytes()}, 46 tmkv.Pair{Key: types.GetDelegationKey(delAddr1, valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(del)}, 47 tmkv.Pair{Key: types.GetUBDKey(delAddr1, valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(ubd)}, 48 tmkv.Pair{Key: types.GetREDKey(delAddr1, valAddr1, valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(red)}, 49 tmkv.Pair{Key: []byte{0x99}, Value: []byte{0x99}}, 50 } 51 52 tests := []struct { 53 name string 54 expectedLog string 55 }{ 56 {"LastTotalPower", fmt.Sprintf("%v\n%v", sdk.OneInt(), sdk.OneInt())}, 57 {"Validator", fmt.Sprintf("%v\n%v", val, val)}, 58 {"LastValidatorPower/ValidatorsByConsAddr/ValidatorsByPowerIndex", fmt.Sprintf("%v\n%v", valAddr1, valAddr1)}, 59 {"Delegation", fmt.Sprintf("%v\n%v", del, del)}, 60 {"UnbondingDelegation", fmt.Sprintf("%v\n%v", ubd, ubd)}, 61 {"Redelegation", fmt.Sprintf("%v\n%v", red, red)}, 62 {"other", ""}, 63 } 64 for i, tt := range tests { 65 i, tt := i, tt 66 t.Run(tt.name, func(t *testing.T) { 67 switch i { 68 case len(tests) - 1: 69 require.Panics(t, func() { DecodeStore(cdc, kvPairs[i], kvPairs[i]) }, tt.name) 70 default: 71 require.Equal(t, tt.expectedLog, DecodeStore(cdc, kvPairs[i], kvPairs[i]), tt.name) 72 } 73 }) 74 } 75 }