fork of go-git with some jj specific features
at main 2.5 kB view raw
1package binary 2 3import ( 4 "bufio" 5 "bytes" 6 "encoding/binary" 7 "testing" 8 9 "github.com/go-git/go-git/v5/plumbing" 10 "github.com/stretchr/testify/suite" 11) 12 13type BinarySuite struct { 14 suite.Suite 15} 16 17func TestBinarySuite(t *testing.T) { 18 suite.Run(t, new(BinarySuite)) 19} 20 21func (s *BinarySuite) TestRead() { 22 buf := bytes.NewBuffer(nil) 23 err := binary.Write(buf, binary.BigEndian, int64(42)) 24 s.NoError(err) 25 err = binary.Write(buf, binary.BigEndian, int32(42)) 26 s.NoError(err) 27 28 var i64 int64 29 var i32 int32 30 err = Read(buf, &i64, &i32) 31 s.NoError(err) 32 s.Equal(int64(42), i64) 33 s.Equal(int32(42), i32) 34} 35 36func (s *BinarySuite) TestReadUntil() { 37 buf := bytes.NewBuffer([]byte("foo bar")) 38 39 b, err := ReadUntil(buf, ' ') 40 s.NoError(err) 41 s.Len(b, 3) 42 s.Equal("foo", string(b)) 43} 44 45func (s *BinarySuite) TestReadUntilFromBufioReader() { 46 buf := bufio.NewReader(bytes.NewBuffer([]byte("foo bar"))) 47 48 b, err := ReadUntilFromBufioReader(buf, ' ') 49 s.NoError(err) 50 s.Len(b, 3) 51 s.Equal("foo", string(b)) 52} 53 54func (s *BinarySuite) TestReadVariableWidthInt() { 55 buf := bytes.NewBuffer([]byte{129, 110}) 56 57 i, err := ReadVariableWidthInt(buf) 58 s.NoError(err) 59 s.Equal(int64(366), i) 60} 61 62func (s *BinarySuite) TestReadVariableWidthIntShort() { 63 buf := bytes.NewBuffer([]byte{19}) 64 65 i, err := ReadVariableWidthInt(buf) 66 s.NoError(err) 67 s.Equal(int64(19), i) 68} 69 70func (s *BinarySuite) TestReadUint32() { 71 buf := bytes.NewBuffer(nil) 72 err := binary.Write(buf, binary.BigEndian, uint32(42)) 73 s.NoError(err) 74 75 i32, err := ReadUint32(buf) 76 s.NoError(err) 77 s.Equal(uint32(42), i32) 78} 79 80func (s *BinarySuite) TestReadUint16() { 81 buf := bytes.NewBuffer(nil) 82 err := binary.Write(buf, binary.BigEndian, uint16(42)) 83 s.NoError(err) 84 85 i32, err := ReadUint16(buf) 86 s.NoError(err) 87 s.Equal(uint16(42), i32) 88} 89 90func (s *BinarySuite) TestReadHash() { 91 expected := plumbing.NewHash("43aec75c611f22c73b27ece2841e6ccca592f285") 92 buf := bytes.NewBuffer(nil) 93 err := binary.Write(buf, binary.BigEndian, expected) 94 s.NoError(err) 95 96 hash, err := ReadHash(buf) 97 s.NoError(err) 98 s.Equal(expected.String(), hash.String()) 99} 100 101func (s *BinarySuite) TestIsBinary() { 102 buf := bytes.NewBuffer(nil) 103 buf.Write(bytes.Repeat([]byte{'A'}, sniffLen)) 104 buf.Write([]byte{0}) 105 ok, err := IsBinary(buf) 106 s.NoError(err) 107 s.False(ok) 108 109 buf.Reset() 110 111 buf.Write(bytes.Repeat([]byte{'A'}, sniffLen-1)) 112 buf.Write([]byte{0}) 113 ok, err = IsBinary(buf) 114 s.NoError(err) 115 s.True(ok) 116 117 buf.Reset() 118 119 buf.Write(bytes.Repeat([]byte{'A'}, 10)) 120 ok, err = IsBinary(buf) 121 s.NoError(err) 122 s.False(ok) 123}