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  }