|
package consensus_test
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"math"
|
|
"testing"
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
tmcons "github.com/tendermint/tendermint/proto/tendermint/consensus"
|
|
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
|
)
|
|
|
|
func TestHasVoteVector(t *testing.T) {
|
|
testCases := []struct {
|
|
msg tmcons.HasVote
|
|
expBytes string
|
|
}{
|
|
{tmcons.HasVote{1, 3, tmproto.PrevoteType, 1}, "3a080801100318012001"},
|
|
{tmcons.HasVote{2, 2, tmproto.PrecommitType, 2}, "3a080802100218022002"},
|
|
{tmcons.HasVote{math.MaxInt64, math.MaxInt32, tmproto.ProposalType, math.MaxInt32},
|
|
"3a1808ffffffffffffffff7f10ffffffff07182020ffffffff07"},
|
|
}
|
|
|
|
for i, tc := range testCases {
|
|
msg := tmcons.Message{&tmcons.Message_HasVote{HasVote: &tc.msg}}
|
|
bz, err := proto.Marshal(&msg)
|
|
require.NoError(t, err)
|
|
require.Equal(t, tc.expBytes, hex.EncodeToString(bz), "test vector failed", i)
|
|
}
|
|
}
|