github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/gov/simulation/decoder_test.go (about) 1 package simulation 2 3 import ( 4 "encoding/binary" 5 "fmt" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 12 tmkv "github.com/fibonacci-chain/fbc/libs/tendermint/libs/kv" 13 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 15 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 16 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/types" 17 ) 18 19 var ( 20 delPk1 = ed25519.GenPrivKey().PubKey() 21 delAddr1 = sdk.AccAddress(delPk1.Address()) 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 TestDecodeStore(t *testing.T) { 33 cdc := makeTestCodec() 34 35 endTime := time.Now().UTC() 36 37 content := types.ContentFromProposalType("test", "test", types.ProposalTypeText) 38 proposal := types.NewProposal(content, 1, endTime, endTime.Add(24*time.Hour)) 39 proposalIDBz := make([]byte, 8) 40 binary.LittleEndian.PutUint64(proposalIDBz, 1) 41 deposit := types.NewDeposit(1, delAddr1, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt()))) 42 vote := types.NewVote(1, delAddr1, types.OptionYes) 43 44 kvPairs := tmkv.Pairs{ 45 tmkv.Pair{Key: types.ProposalKey(1), Value: cdc.MustMarshalBinaryLengthPrefixed(proposal)}, 46 tmkv.Pair{Key: types.InactiveProposalQueueKey(1, endTime), Value: proposalIDBz}, 47 tmkv.Pair{Key: types.DepositKey(1, delAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(deposit)}, 48 tmkv.Pair{Key: types.VoteKey(1, delAddr1), Value: cdc.MustMarshalBinaryLengthPrefixed(vote)}, 49 tmkv.Pair{Key: []byte{0x99}, Value: []byte{0x99}}, 50 } 51 52 tests := []struct { 53 name string 54 expectedLog string 55 }{ 56 {"proposals", fmt.Sprintf("%v\n%v", proposal, proposal)}, 57 {"proposal IDs", "proposalIDA: 1\nProposalIDB: 1"}, 58 {"deposits", fmt.Sprintf("%v\n%v", deposit, deposit)}, 59 {"votes", fmt.Sprintf("%v\n%v", vote, vote)}, 60 {"other", ""}, 61 } 62 63 for i, tt := range tests { 64 i, tt := i, tt 65 t.Run(tt.name, func(t *testing.T) { 66 switch i { 67 case len(tests) - 1: 68 require.Panics(t, func() { DecodeStore(cdc, kvPairs[i], kvPairs[i]) }, tt.name) 69 default: 70 require.Equal(t, tt.expectedLog, DecodeStore(cdc, kvPairs[i], kvPairs[i]), tt.name) 71 } 72 }) 73 } 74 }