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 }