github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/pack/chain_base_test.go (about)

     1  package pack
     2  
     3  import (
     4  	"bytes"
     5  	"compress/zlib"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestChainBaseDecompressesData(t *testing.T) {
    12  	const contents = "Hello, world!\n"
    13  
    14  	compressed, err := compress(contents)
    15  	assert.NoError(t, err)
    16  
    17  	var buf bytes.Buffer
    18  
    19  	_, err = buf.Write([]byte{0x0, 0x0, 0x0, 0x0})
    20  	assert.NoError(t, err)
    21  
    22  	_, err = buf.Write(compressed)
    23  	assert.NoError(t, err)
    24  
    25  	_, err = buf.Write([]byte{0x0, 0x0, 0x0, 0x0})
    26  	assert.NoError(t, err)
    27  
    28  	base := &ChainBase{
    29  		offset: 4,
    30  		size:   int64(len(contents)),
    31  
    32  		r: bytes.NewReader(buf.Bytes()),
    33  	}
    34  
    35  	unpacked, err := base.Unpack()
    36  	assert.NoError(t, err)
    37  	assert.Equal(t, contents, string(unpacked))
    38  }
    39  
    40  func TestChainBaseTypeReturnsType(t *testing.T) {
    41  	b := &ChainBase{
    42  		typ: TypeCommit,
    43  	}
    44  
    45  	assert.Equal(t, TypeCommit, b.Type())
    46  }
    47  
    48  func compress(base string) ([]byte, error) {
    49  	var buf bytes.Buffer
    50  
    51  	zw := zlib.NewWriter(&buf)
    52  	if _, err := zw.Write([]byte(base)); err != nil {
    53  		return nil, err
    54  	}
    55  
    56  	if err := zw.Close(); err != nil {
    57  		return nil, err
    58  	}
    59  	return buf.Bytes(), nil
    60  }