github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/distribution/simulation/decoder_test.go (about) 1 package simulation 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 10 tmkv "github.com/fibonacci-chain/fbc/libs/tendermint/libs/kv" 11 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 13 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-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 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 TestDecodeDistributionStore(t *testing.T) { 33 cdc := makeTestCodec() 34 35 decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.OneDec())} 36 feePool := types.InitialFeePool() 37 feePool.CommunityPool = decCoins 38 info := types.NewDelegatorStartingInfo(2, sdk.OneDec(), 200) 39 outstanding := types.ValidatorOutstandingRewards{decCoins[0]} 40 commission := types.ValidatorAccumulatedCommission{decCoins[0]} 41 historicalRewards := types.NewValidatorHistoricalRewards(decCoins, 100) 42 currentRewards := types.NewValidatorCurrentRewards(decCoins, 5) 43 slashEvent := types.NewValidatorSlashEvent(10, sdk.OneDec()) 44 45 kvPairs := tmkv.Pairs{ 46 tmkv.Pair{Key: types.FeePoolKey, Value: cdc.MustMarshalBinaryLengthPrefixed(feePool)}, 47 tmkv.Pair{Key: types.ProposerKey, Value: consAddr1.Bytes()}, 48 tmkv.Pair{Key: types.GetValidatorOutstandingRewardsKey(valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(outstanding)}, 49 tmkv.Pair{Key: types.GetDelegatorWithdrawAddrKey(delAddr1), Value: delAddr1.Bytes()}, 50 tmkv.Pair{Key: types.GetDelegatorStartingInfoKey(valAddr1, delAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(info)}, 51 tmkv.Pair{Key: types.GetValidatorHistoricalRewardsKey(valAddr1, 100), Value: cdc.MustMarshalBinaryLengthPrefixed(historicalRewards)}, 52 tmkv.Pair{Key: types.GetValidatorCurrentRewardsKey(valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(currentRewards)}, 53 tmkv.Pair{Key: types.GetValidatorAccumulatedCommissionKey(valAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(commission)}, 54 tmkv.Pair{Key: types.GetValidatorSlashEventKeyPrefix(valAddr1, 13), Value: cdc.MustMarshalBinaryLengthPrefixed(slashEvent)}, 55 tmkv.Pair{Key: []byte{0x99}, Value: []byte{0x99}}, 56 } 57 58 tests := []struct { 59 name string 60 expectedLog string 61 }{ 62 {"FeePool", fmt.Sprintf("%v\n%v", feePool, feePool)}, 63 {"Proposer", fmt.Sprintf("%v\n%v", consAddr1, consAddr1)}, 64 {"ValidatorOutstandingRewards", fmt.Sprintf("%v\n%v", outstanding, outstanding)}, 65 {"DelegatorWithdrawAddr", fmt.Sprintf("%v\n%v", delAddr1, delAddr1)}, 66 {"DelegatorStartingInfo", fmt.Sprintf("%v\n%v", info, info)}, 67 {"ValidatorHistoricalRewards", fmt.Sprintf("%v\n%v", historicalRewards, historicalRewards)}, 68 {"ValidatorCurrentRewards", fmt.Sprintf("%v\n%v", currentRewards, currentRewards)}, 69 {"ValidatorAccumulatedCommission", fmt.Sprintf("%v\n%v", commission, commission)}, 70 {"ValidatorSlashEvent", fmt.Sprintf("%v\n%v", slashEvent, slashEvent)}, 71 {"other", ""}, 72 } 73 for i, tt := range tests { 74 i, tt := i, tt 75 t.Run(tt.name, func(t *testing.T) { 76 switch i { 77 case len(tests) - 1: 78 require.Panics(t, func() { DecodeStore(cdc, kvPairs[i], kvPairs[i]) }, tt.name) 79 default: 80 require.Equal(t, tt.expectedLog, DecodeStore(cdc, kvPairs[i], kvPairs[i]), tt.name) 81 } 82 }) 83 } 84 }