Imported Upstream version 2.4.2
[scm/test.git] / vendor / github.com / git-lfs / gitobj / pack / index_decode_test.go
1 package pack
2
3 import (
4         "bytes"
5         "encoding/binary"
6         "io"
7         "testing"
8
9         "github.com/stretchr/testify/assert"
10 )
11
12 func TestDecodeIndexV2(t *testing.T) {
13         buf := make([]byte, 0, indexV2Width+indexFanoutWidth)
14         buf = append(buf, 0xff, 0x74, 0x4f, 0x63)
15         buf = append(buf, 0x0, 0x0, 0x0, 0x2)
16         for i := 0; i < indexFanoutEntries; i++ {
17                 x := make([]byte, 4)
18
19                 binary.BigEndian.PutUint32(x, uint32(3))
20
21                 buf = append(buf, x...)
22         }
23
24         idx, err := DecodeIndex(bytes.NewReader(buf))
25
26         assert.NoError(t, err)
27         assert.EqualValues(t, 3, idx.Count())
28 }
29
30 func TestDecodeIndexV2InvalidFanout(t *testing.T) {
31         buf := make([]byte, 0, indexV2Width+indexFanoutWidth-indexFanoutEntryWidth)
32         buf = append(buf, 0xff, 0x74, 0x4f, 0x63)
33         buf = append(buf, 0x0, 0x0, 0x0, 0x2)
34         buf = append(buf, make([]byte, indexFanoutWidth-1)...)
35
36         idx, err := DecodeIndex(bytes.NewReader(buf))
37
38         assert.Equal(t, ErrShortFanout, err)
39         assert.Nil(t, idx)
40 }
41
42 func TestDecodeIndexV1(t *testing.T) {
43         idx, err := DecodeIndex(bytes.NewReader(make([]byte, indexFanoutWidth)))
44
45         assert.NoError(t, err)
46         assert.EqualValues(t, 0, idx.Count())
47 }
48
49 func TestDecodeIndexV1InvalidFanout(t *testing.T) {
50         idx, err := DecodeIndex(bytes.NewReader(make([]byte, indexFanoutWidth-1)))
51
52         assert.Equal(t, ErrShortFanout, err)
53         assert.Nil(t, idx)
54 }
55
56 func TestDecodeIndexUnsupportedVersion(t *testing.T) {
57         buf := make([]byte, 0, 4+4)
58         buf = append(buf, 0xff, 0x74, 0x4f, 0x63)
59         buf = append(buf, 0x0, 0x0, 0x0, 0x3)
60
61         idx, err := DecodeIndex(bytes.NewReader(buf))
62
63         assert.EqualError(t, err, "gitobj/pack: unsupported version: 3")
64         assert.Nil(t, idx)
65 }
66
67 func TestDecodeIndexEmptyContents(t *testing.T) {
68         idx, err := DecodeIndex(bytes.NewReader(make([]byte, 0)))
69
70         assert.Equal(t, io.EOF, err)
71         assert.Nil(t, idx)
72 }