Imported Upstream version 2.4.2
[scm/test.git] / git / odb / pack / io_test.go
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 }