diff --git a/bit/reader.go b/bit/reader.go index a124961..89c4366 100644 --- a/bit/reader.go +++ b/bit/reader.go @@ -2,14 +2,12 @@ package bit import ( "bufio" - "bytes" "io" ) // Reader allows for the reading and skipping of bits and bytes. type Reader interface { ReadBits(uint) uint64 - DiscardBits(int) ReadByte() byte Read([]byte) int DiscardBytes(int) @@ -28,5 +26,5 @@ func NewReader(r io.Reader) Reader { // NewByteReader creates a bit.Reader for a static slice of bytes. It's just // using a bytes.Reader internally. func NewBytesReader(b []byte) Reader { - return NewReader(bytes.NewReader(b)) + return &bufReader{src: b} } diff --git a/bit/reader_test.go b/bit/reader_test.go index 8cb2845..6b48d0c 100644 --- a/bit/reader_test.go +++ b/bit/reader_test.go @@ -18,7 +18,7 @@ var ( func TestReadBits(t *testing.T) { var ( assert = assert.New(t) - r *Reader + r Reader ) // aligned reading @@ -62,16 +62,15 @@ func TestReadBits(t *testing.T) { func TestRead(t *testing.T) { var ( assert = assert.New(t) - r *Reader + r Reader buf []byte n int - err error ) r = NewBytesReader(badFood) buf = make([]byte, 4) - n, err = r.Read(buf) - assert.NoError(err) + n = r.Read(buf) + assert.NoError(r.Err()) assert.Equal(4, n) assert.Equal(badFood, buf) @@ -83,8 +82,8 @@ func TestRead(t *testing.T) { // ^------^..........^ : 1111 1000 buf = make([]byte, 3) - n, err = r.Read(buf) - assert.NoError(err) + n = r.Read(buf) + assert.NoError(r.Err()) assert.Equal(3, n) expected := []byte{0xc5, 0x56, 0xf8} @@ -94,7 +93,7 @@ func TestRead(t *testing.T) { func TestUbitVar(t *testing.T) { var ( assert = assert.New(t) - r *Reader + r Reader u uint64 ) @@ -108,7 +107,7 @@ func TestUbitVar(t *testing.T) { // 1000 1011 1010 1101 1111 0000 0000 1101 // ^^ : prefix 00 // ^---^ : data 0101 - u = r.ReadUBitVar() + u = ReadUBitVar(r) assert.Equal(uint64(5), u) // 1000 1011 1010 1101 1111 0000 0000 1101 @@ -119,7 +118,7 @@ func TestUbitVar(t *testing.T) { // ^^ : prefix 01 // ^...............^-^ : msb 0001 // ^---^ : lsb 0110 - u = r.ReadUBitVar() + u = ReadUBitVar(r) assert.Equal(uint64(0x16), u) // 1000 1011 1010 1101 1111 0000 0000 1101 @@ -133,7 +132,7 @@ func TestUbitVar(t *testing.T) { // ^^ : prefix 10 // ^-------^ : msb 1010 1101 // ^---^ : lsb 0010 - u = r.ReadUBitVar() + u = ReadUBitVar(r) assert.Equal(uint64(0xad2), u) // 1110 1100 0111 0000 1100 0000 0000 0001 1110 0010 @@ -152,14 +151,14 @@ func TestUbitVar(t *testing.T) { // ^---^ : lsb 1011 // data bits: // 0010 0000 0001 1110 0000 0111 0000 1011 - u = r.ReadUBitVar() + u = ReadUBitVar(r) assert.Equal(uint64(0x201c070b), u) } func TestVarInt(t *testing.T) { var ( assert = assert.New(t) - r *Reader + r Reader u uint64 ) @@ -168,7 +167,7 @@ func TestVarInt(t *testing.T) { // 1000 1011 1010 1101 1111 0000 0000 1101 // ^------^ : data // ^ : stop - u = r.ReadVarInt() + u = ReadVarInt(r) assert.Equal(uint64(0xd), u) r = NewBytesReader(badFood) @@ -181,7 +180,7 @@ func TestVarInt(t *testing.T) { // data bits: // 0000 0110 1111 0000 // 0 6 f 0 - u = r.ReadVarInt() + u = ReadVarInt(r) assert.Equal(uint64(0x6f0), u) r = NewBytesReader(badFood) @@ -197,6 +196,6 @@ func TestVarInt(t *testing.T) { // data bits: // 0001 1011 1100 0001 0110 1000 1011 // 1 b c 1 6 8 b - u = r.ReadVarInt() + u = ReadVarInt(r) assert.Equal(uint64(0x1bc168b), u) } diff --git a/bit/stream_reader.go b/bit/stream_reader.go index 1200bc9..3351db6 100644 --- a/bit/stream_reader.go +++ b/bit/stream_reader.go @@ -36,11 +36,6 @@ func (r *streamReader) ReadBits(bits uint) (n uint64) { return } -// discards up to bits bits. returns a bool indicating wheter any errors occured. -func (r *streamReader) DiscardBits(n int) { - r.ReadBits(uint(n)) -} - // ReadByte reads a single byte, regardless of alignment. func (r *streamReader) ReadByte() byte { if r.bits == 0 {