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  }