github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/pack/io_test.go (about) 1 package pack 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/git-lfs/git-lfs/errors" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestOffsetReaderAtReadsAtOffset(t *testing.T) { 13 bo := &OffsetReaderAt{ 14 r: bytes.NewReader([]byte{0x0, 0x1, 0x2, 0x3}), 15 o: 1, 16 } 17 18 var x1 [1]byte 19 n1, e1 := bo.Read(x1[:]) 20 21 assert.NoError(t, e1) 22 assert.Equal(t, 1, n1) 23 24 assert.EqualValues(t, 0x1, x1[0]) 25 26 var x2 [1]byte 27 n2, e2 := bo.Read(x2[:]) 28 29 assert.NoError(t, e2) 30 assert.Equal(t, 1, n2) 31 assert.EqualValues(t, 0x2, x2[0]) 32 } 33 34 func TestOffsetReaderPropogatesErrors(t *testing.T) { 35 expected := errors.New("git/odb/pack: testing") 36 bo := &OffsetReaderAt{ 37 r: &ErrReaderAt{Err: expected}, 38 o: 1, 39 } 40 41 n, err := bo.Read(make([]byte, 1)) 42 43 assert.Equal(t, expected, err) 44 assert.Equal(t, 0, n) 45 } 46 47 type ErrReaderAt struct { 48 Err error 49 } 50 51 func (e *ErrReaderAt) ReadAt(p []byte, at int64) (n int, err error) { 52 return 0, e.Err 53 }