2
0
mirror of synced 2025-02-23 14:18:13 +00:00

Add a test that short pieces are decoded correctly

This commit is contained in:
Matt Joiner 2018-07-12 09:54:06 +10:00
parent 324cc7a281
commit c001e6e008

View File

@ -7,6 +7,7 @@ import (
"testing"
"github.com/bradfitz/iter"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -52,3 +53,23 @@ func BenchmarkDecodePieces(t *testing.B) {
d.Pool.Put(&msg.Piece)
}
}
func TestDecodeShortPieceEOF(t *testing.T) {
r, w := io.Pipe()
go func() {
w.Write(Message{Type: Piece, Piece: make([]byte, 1)}.MustMarshalBinary())
w.Close()
}()
d := Decoder{
R: bufio.NewReader(r),
MaxLength: 1 << 15,
Pool: &sync.Pool{New: func() interface{} {
b := make([]byte, 2)
return &b
}},
}
var m Message
require.NoError(t, d.Decode(&m))
assert.Len(t, m.Piece, 1)
assert.Equal(t, io.EOF, d.Decode(&m))
}