cosmos-sdk/x/gov/types/keys_test.go

72 lines
1.8 KiB
Go

package types
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/tendermint/tendermint/crypto/ed25519"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var addr = sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address())
func TestProposalKeys(t *testing.T) {
// key proposal
key := ProposalKey(1)
proposalID := SplitProposalKey(key)
require.Equal(t, int(proposalID), 1)
// key active proposal queue
now := time.Now()
key = ActiveProposalQueueKey(3, now)
proposalID, expTime := SplitActiveProposalQueueKey(key)
require.Equal(t, int(proposalID), 3)
require.True(t, now.Equal(expTime))
// key inactive proposal queue
key = InactiveProposalQueueKey(3, now)
proposalID, expTime = SplitInactiveProposalQueueKey(key)
require.Equal(t, int(proposalID), 3)
require.True(t, now.Equal(expTime))
// invalid key
require.Panics(t, func() { SplitProposalKey([]byte("test")) })
require.Panics(t, func() { SplitInactiveProposalQueueKey([]byte("test")) })
}
func TestDepositKeys(t *testing.T) {
key := DepositsKey(2)
proposalID := SplitProposalKey(key)
require.Equal(t, int(proposalID), 2)
key = DepositKey(2, addr)
proposalID, depositorAddr := SplitKeyDeposit(key)
require.Equal(t, int(proposalID), 2)
require.Equal(t, addr, depositorAddr)
// invalid key
addr2 := sdk.AccAddress("test1")
key = DepositKey(5, addr2)
require.Panics(t, func() { SplitKeyDeposit(key) })
}
func TestVoteKeys(t *testing.T) {
key := VotesKey(2)
proposalID := SplitProposalKey(key)
require.Equal(t, int(proposalID), 2)
key = VoteKey(2, addr)
proposalID, voterAddr := SplitKeyDeposit(key)
require.Equal(t, int(proposalID), 2)
require.Equal(t, addr, voterAddr)
// invalid key
addr2 := sdk.AccAddress("test1")
key = VoteKey(5, addr2)
require.Panics(t, func() { SplitKeyVote(key) })
}