get bit reader and tests working
This commit is contained in:
parent
13e1f90ff7
commit
7907df0458
@ -41,6 +41,9 @@ func (r *BitReader) ReadBits(count int) (uint64, error) {
|
|||||||
|
|
||||||
value <<= uint(bitsRead)
|
value <<= uint(bitsRead)
|
||||||
value |= uint64(buffer)
|
value |= uint64(buffer)
|
||||||
|
|
||||||
|
r.offset += bitsRead
|
||||||
|
count -= bitsRead
|
||||||
}
|
}
|
||||||
|
|
||||||
return value, nil
|
return value, nil
|
||||||
|
@ -2,7 +2,6 @@ package streaming
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -16,6 +15,28 @@ func TestBitReader(t *testing.T) {
|
|||||||
0xff, // 11111111
|
0xff, // 11111111
|
||||||
}
|
}
|
||||||
|
|
||||||
reader := NewReader(bytes.NewReader(data))
|
r := NewReader(bytes.NewReader(data))
|
||||||
fmt.Println(reader.ReadBits(2))
|
|
||||||
|
readPass := func(c int, v uint64) {
|
||||||
|
if value, err := r.ReadBits(c); value != v || err != nil {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
readFail := func(c int) {
|
||||||
|
if value, err := r.ReadBits(c); value != 0 || err == nil {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
readPass(0, 0x00)
|
||||||
|
readFail(65)
|
||||||
|
readPass(2, 0x01)
|
||||||
|
readPass(2, 0x02)
|
||||||
|
readPass(3, 0x04)
|
||||||
|
readPass(1, 0x01)
|
||||||
|
readPass(12, 0x096f)
|
||||||
|
readPass(8, 0x000a)
|
||||||
|
readPass(20, 0x0a00ff)
|
||||||
|
readFail(1)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user