package types
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/tendermint/tendermint/crypto/tmhash"
|
|
tmrand "github.com/tendermint/tendermint/libs/rand"
|
|
)
|
|
|
|
func TestBlockMeta_ToProto(t *testing.T) {
|
|
h := makeRandHeader()
|
|
bi := BlockID{Hash: h.Hash(), PartSetHeader: PartSetHeader{Total: 123, Hash: tmrand.Bytes(tmhash.Size)}}
|
|
|
|
bm := &BlockMeta{
|
|
BlockID: bi,
|
|
BlockSize: 200,
|
|
Header: h,
|
|
NumTxs: 0,
|
|
}
|
|
|
|
tests := []struct {
|
|
testName string
|
|
bm *BlockMeta
|
|
expErr bool
|
|
}{
|
|
{"success", bm, false},
|
|
{"failure nil", nil, true},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
t.Run(tt.testName, func(t *testing.T) {
|
|
pb := tt.bm.ToProto()
|
|
|
|
bm, err := BlockMetaFromProto(pb)
|
|
|
|
if !tt.expErr {
|
|
require.NoError(t, err, tt.testName)
|
|
require.Equal(t, tt.bm, bm, tt.testName)
|
|
} else {
|
|
require.Error(t, err, tt.testName)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlockMeta_ValidateBasic(t *testing.T) {
|
|
h := makeRandHeader()
|
|
bi := BlockID{Hash: h.Hash(), PartSetHeader: PartSetHeader{Total: 123, Hash: tmrand.Bytes(tmhash.Size)}}
|
|
bi2 := BlockID{Hash: tmrand.Bytes(tmhash.Size),
|
|
PartSetHeader: PartSetHeader{Total: 123, Hash: tmrand.Bytes(tmhash.Size)}}
|
|
bi3 := BlockID{Hash: []byte("incorrect hash"),
|
|
PartSetHeader: PartSetHeader{Total: 123, Hash: []byte("incorrect hash")}}
|
|
|
|
bm := &BlockMeta{
|
|
BlockID: bi,
|
|
BlockSize: 200,
|
|
Header: h,
|
|
NumTxs: 0,
|
|
}
|
|
|
|
bm2 := &BlockMeta{
|
|
BlockID: bi2,
|
|
BlockSize: 200,
|
|
Header: h,
|
|
NumTxs: 0,
|
|
}
|
|
|
|
bm3 := &BlockMeta{
|
|
BlockID: bi3,
|
|
BlockSize: 200,
|
|
Header: h,
|
|
NumTxs: 0,
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
bm *BlockMeta
|
|
wantErr bool
|
|
}{
|
|
{"success", bm, false},
|
|
{"failure wrong blockID hash", bm2, true},
|
|
{"failure wrong length blockID hash", bm3, true},
|
|
}
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if err := tt.bm.ValidateBasic(); (err != nil) != tt.wantErr {
|
|
t.Errorf("BlockMeta.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|