fork of go-git with some jj specific features
at v5.5.2 122 lines 2.8 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 11 . "gopkg.in/check.v1" 12) 13 14func Test(t *testing.T) { TestingT(t) } 15 16type BinarySuite struct{} 17 18var _ = Suite(&BinarySuite{}) 19 20func (s *BinarySuite) TestRead(c *C) { 21 buf := bytes.NewBuffer(nil) 22 err := binary.Write(buf, binary.BigEndian, int64(42)) 23 c.Assert(err, IsNil) 24 err = binary.Write(buf, binary.BigEndian, int32(42)) 25 c.Assert(err, IsNil) 26 27 var i64 int64 28 var i32 int32 29 err = Read(buf, &i64, &i32) 30 c.Assert(err, IsNil) 31 c.Assert(i64, Equals, int64(42)) 32 c.Assert(i32, Equals, int32(42)) 33} 34 35func (s *BinarySuite) TestReadUntil(c *C) { 36 buf := bytes.NewBuffer([]byte("foo bar")) 37 38 b, err := ReadUntil(buf, ' ') 39 c.Assert(err, IsNil) 40 c.Assert(b, HasLen, 3) 41 c.Assert(string(b), Equals, "foo") 42} 43 44func (s *BinarySuite) TestReadUntilFromBufioReader(c *C) { 45 buf := bufio.NewReader(bytes.NewBuffer([]byte("foo bar"))) 46 47 b, err := ReadUntilFromBufioReader(buf, ' ') 48 c.Assert(err, IsNil) 49 c.Assert(b, HasLen, 3) 50 c.Assert(string(b), Equals, "foo") 51} 52 53func (s *BinarySuite) TestReadVariableWidthInt(c *C) { 54 buf := bytes.NewBuffer([]byte{129, 110}) 55 56 i, err := ReadVariableWidthInt(buf) 57 c.Assert(err, IsNil) 58 c.Assert(i, Equals, int64(366)) 59} 60 61func (s *BinarySuite) TestReadVariableWidthIntShort(c *C) { 62 buf := bytes.NewBuffer([]byte{19}) 63 64 i, err := ReadVariableWidthInt(buf) 65 c.Assert(err, IsNil) 66 c.Assert(i, Equals, int64(19)) 67} 68 69func (s *BinarySuite) TestReadUint32(c *C) { 70 buf := bytes.NewBuffer(nil) 71 err := binary.Write(buf, binary.BigEndian, uint32(42)) 72 c.Assert(err, IsNil) 73 74 i32, err := ReadUint32(buf) 75 c.Assert(err, IsNil) 76 c.Assert(i32, Equals, uint32(42)) 77} 78 79func (s *BinarySuite) TestReadUint16(c *C) { 80 buf := bytes.NewBuffer(nil) 81 err := binary.Write(buf, binary.BigEndian, uint16(42)) 82 c.Assert(err, IsNil) 83 84 i32, err := ReadUint16(buf) 85 c.Assert(err, IsNil) 86 c.Assert(i32, Equals, uint16(42)) 87} 88 89func (s *BinarySuite) TestReadHash(c *C) { 90 expected := plumbing.NewHash("43aec75c611f22c73b27ece2841e6ccca592f285") 91 buf := bytes.NewBuffer(nil) 92 err := binary.Write(buf, binary.BigEndian, expected) 93 c.Assert(err, IsNil) 94 95 hash, err := ReadHash(buf) 96 c.Assert(err, IsNil) 97 c.Assert(hash.String(), Equals, expected.String()) 98} 99 100func (s *BinarySuite) TestIsBinary(c *C) { 101 buf := bytes.NewBuffer(nil) 102 buf.Write(bytes.Repeat([]byte{'A'}, sniffLen)) 103 buf.Write([]byte{0}) 104 ok, err := IsBinary(buf) 105 c.Assert(err, IsNil) 106 c.Assert(ok, Equals, false) 107 108 buf.Reset() 109 110 buf.Write(bytes.Repeat([]byte{'A'}, sniffLen-1)) 111 buf.Write([]byte{0}) 112 ok, err = IsBinary(buf) 113 c.Assert(err, IsNil) 114 c.Assert(ok, Equals, true) 115 116 buf.Reset() 117 118 buf.Write(bytes.Repeat([]byte{'A'}, 10)) 119 ok, err = IsBinary(buf) 120 c.Assert(err, IsNil) 121 c.Assert(ok, Equals, false) 122}