github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/simulation/decoder_test.go (about) 1 package simulation_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 10 "github.com/Finschia/finschia-sdk/simapp" 11 sdk "github.com/Finschia/finschia-sdk/types" 12 "github.com/Finschia/finschia-sdk/types/kv" 13 "github.com/Finschia/finschia-sdk/x/distribution/simulation" 14 "github.com/Finschia/finschia-sdk/x/distribution/types" 15 ) 16 17 var ( 18 delPk1 = ed25519.GenPrivKey().PubKey() 19 delAddr1 = sdk.AccAddress(delPk1.Address()) 20 valAddr1 = sdk.ValAddress(delPk1.Address()) 21 consAddr1 = sdk.ConsAddress(delPk1.Address().Bytes()) 22 ) 23 24 func TestDecodeDistributionStore(t *testing.T) { 25 cdc := simapp.MakeTestEncodingConfig().Marshaler 26 dec := simulation.NewDecodeStore(cdc) 27 28 decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.OneDec())} 29 feePool := types.InitialFeePool() 30 feePool.CommunityPool = decCoins 31 info := types.NewDelegatorStartingInfo(2, sdk.OneDec(), 200) 32 outstanding := types.ValidatorOutstandingRewards{Rewards: decCoins} 33 commission := types.ValidatorAccumulatedCommission{Commission: decCoins} 34 historicalRewards := types.NewValidatorHistoricalRewards(decCoins, 100) 35 currentRewards := types.NewValidatorCurrentRewards(decCoins, 5) 36 slashEvent := types.NewValidatorSlashEvent(10, sdk.OneDec()) 37 38 kvPairs := kv.Pairs{ 39 Pairs: []kv.Pair{ 40 {Key: types.FeePoolKey, Value: cdc.MustMarshal(&feePool)}, 41 {Key: types.ProposerKey, Value: consAddr1.Bytes()}, 42 {Key: types.GetValidatorOutstandingRewardsKey(valAddr1), Value: cdc.MustMarshal(&outstanding)}, 43 {Key: types.GetDelegatorWithdrawAddrKey(delAddr1), Value: delAddr1.Bytes()}, 44 {Key: types.GetDelegatorStartingInfoKey(valAddr1, delAddr1), Value: cdc.MustMarshal(&info)}, 45 {Key: types.GetValidatorHistoricalRewardsKey(valAddr1, 100), Value: cdc.MustMarshal(&historicalRewards)}, 46 {Key: types.GetValidatorCurrentRewardsKey(valAddr1), Value: cdc.MustMarshal(¤tRewards)}, 47 {Key: types.GetValidatorAccumulatedCommissionKey(valAddr1), Value: cdc.MustMarshal(&commission)}, 48 {Key: types.GetValidatorSlashEventKeyPrefix(valAddr1, 13), Value: cdc.MustMarshal(&slashEvent)}, 49 {Key: []byte{0x99}, Value: []byte{0x99}}, 50 }, 51 } 52 53 tests := []struct { 54 name string 55 expectedLog string 56 }{ 57 {"FeePool", fmt.Sprintf("%v\n%v", feePool, feePool)}, 58 {"Proposer", fmt.Sprintf("%v\n%v", consAddr1, consAddr1)}, 59 {"ValidatorOutstandingRewards", fmt.Sprintf("%v\n%v", outstanding, outstanding)}, 60 {"DelegatorWithdrawAddr", fmt.Sprintf("%v\n%v", delAddr1, delAddr1)}, 61 {"DelegatorStartingInfo", fmt.Sprintf("%v\n%v", info, info)}, 62 {"ValidatorHistoricalRewards", fmt.Sprintf("%v\n%v", historicalRewards, historicalRewards)}, 63 {"ValidatorCurrentRewards", fmt.Sprintf("%v\n%v", currentRewards, currentRewards)}, 64 {"ValidatorAccumulatedCommission", fmt.Sprintf("%v\n%v", commission, commission)}, 65 {"ValidatorSlashEvent", fmt.Sprintf("%v\n%v", slashEvent, slashEvent)}, 66 {"other", ""}, 67 } 68 for i, tt := range tests { 69 i, tt := i, tt 70 t.Run(tt.name, func(t *testing.T) { 71 switch i { 72 case len(tests) - 1: 73 require.Panics(t, func() { dec(kvPairs.Pairs[i], kvPairs.Pairs[i]) }, tt.name) 74 default: 75 require.Equal(t, tt.expectedLog, dec(kvPairs.Pairs[i], kvPairs.Pairs[i]), tt.name) 76 } 77 }) 78 } 79 }