github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/lib/readers/readfill_test.go (about) 1 package readers 2 3 import ( 4 "io" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 type byteReader struct { 11 c byte 12 } 13 14 func (br *byteReader) Read(p []byte) (n int, err error) { 15 if br.c == 0 { 16 err = io.EOF 17 } else if len(p) >= 1 { 18 p[0] = br.c 19 n = 1 20 br.c-- 21 } 22 return 23 } 24 25 func TestReadFill(t *testing.T) { 26 buf := []byte{9, 9, 9, 9, 9} 27 28 n, err := ReadFill(&byteReader{0}, buf) 29 assert.Equal(t, io.EOF, err) 30 assert.Equal(t, 0, n) 31 assert.Equal(t, []byte{9, 9, 9, 9, 9}, buf) 32 33 n, err = ReadFill(&byteReader{3}, buf) 34 assert.Equal(t, io.EOF, err) 35 assert.Equal(t, 3, n) 36 assert.Equal(t, []byte{3, 2, 1, 9, 9}, buf) 37 38 n, err = ReadFill(&byteReader{8}, buf) 39 assert.Equal(t, nil, err) 40 assert.Equal(t, 5, n) 41 assert.Equal(t, []byte{8, 7, 6, 5, 4}, buf) 42 }