1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
package smb2
import (
"bytes"
"testing"
)
type partialReader struct {
buf *bytes.Buffer
}
func (p *partialReader) Read(b []byte) (int, error) {
if len(b) < 2 {
return p.buf.Read(b)
}
// read partial of b
return p.buf.Read(b[:len(b)/2])
}
func TestCopyBufferPartialRead(t *testing.T) {
bufIn := []byte("this is a partial read test data")
bufR := make([]byte, len(bufIn))
copy(bufR, bufIn)
p := &partialReader{
buf: bytes.NewBuffer(bufR),
}
var bufW bytes.Buffer
n, err := copyBuffer(p, &bufW, make([]byte, 8))
if err != nil {
t.Fatal(err)
}
if n != int64(len(bufIn)) {
t.Fatal("size not equal")
}
if !bytes.Equal(bufIn, bufW.Bytes()) {
t.Fatal("data not equal")
}
}
|