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