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(&currentRewards)},
    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  }