update unit tests for bit reader
This commit is contained in:
parent
a67b06a511
commit
08d71f5bc4
@ -2,37 +2,65 @@ package streaming
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"log"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBitReader(t *testing.T) {
|
var data = []byte{
|
||||||
data := []byte{
|
0x01, // 00000001
|
||||||
0x01, // 00000001
|
0x23, // 00100011
|
||||||
0x23, // 00100011
|
0x45, // 01000101
|
||||||
0x45, // 01000101
|
0x67, // 01100111
|
||||||
0x67, // 01100111
|
0x89, // 01100111
|
||||||
0x89, // 01100111
|
0xAB, // 10101011
|
||||||
0xAB, // 10101011
|
0xCD, // 11001101
|
||||||
0xCD, // 11001101
|
0xEF, // 11101111
|
||||||
0xEF, // 11101111
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
func testRead(test *testing.T, reader *BitReader, count int, expected uint64) {
|
||||||
|
value, err := reader.ReadUint64(count)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("error: %s\n", err.Error())
|
||||||
|
test.Fail()
|
||||||
|
} else if value != expected {
|
||||||
|
log.Printf("value: %.16x, expected: %.16x\n", value, expected)
|
||||||
|
test.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUnsigned(t *testing.T) {
|
||||||
r := NewBitReader(bytes.NewReader(data))
|
r := NewBitReader(bytes.NewReader(data))
|
||||||
|
|
||||||
readPass := func(c int, v uint64) {
|
testRead(t, r, 0, 0x00)
|
||||||
if value, err := r.ReadUint64(c); value != v || err != nil {
|
testRead(t, r, 8, 0x01)
|
||||||
fmt.Printf("%.16x (expected %.16x)\n", value, v)
|
testRead(t, r, 16, 0x4523)
|
||||||
t.Fail()
|
testRead(t, r, 3, 0x67&0x07)
|
||||||
}
|
testRead(t, r, 13, 0x8967>>3)
|
||||||
}
|
testRead(t, r, 13, 0xcdab&0x1fff)
|
||||||
|
testRead(t, r, 2, (0xcdab>>13)&3)
|
||||||
readPass(0, 0x00)
|
testRead(t, r, 9, 0xefcdab>>15)
|
||||||
readPass(8, 0x01)
|
}
|
||||||
readPass(16, 0x4523)
|
|
||||||
readPass(3, 0x67&0x07)
|
func TestUnsignedSmall(t *testing.T) {
|
||||||
readPass(13, 0x8967>>3)
|
r := NewBitReader(bytes.NewReader(data))
|
||||||
readPass(13, 0xcdab&0x1fff)
|
|
||||||
readPass(2, (0xcdab>>13)&3)
|
testRead(t, r, 0, 0x00)
|
||||||
readPass(9, 0xefcdab>>15)
|
testRead(t, r, 8, 0x01)
|
||||||
|
testRead(t, r, 8, 0x23)
|
||||||
|
testRead(t, r, 8, 0x45)
|
||||||
|
testRead(t, r, 16, 0x8967)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUnsignedTiny(t *testing.T) {
|
||||||
|
r := NewBitReader(bytes.NewReader(data))
|
||||||
|
|
||||||
|
testRead(t, r, 0, 0x00)
|
||||||
|
testRead(t, r, 8, 0x01)
|
||||||
|
testRead(t, r, 16, 0x4523)
|
||||||
|
testRead(t, r, 3, 0x67&0x07)
|
||||||
|
testRead(t, r, 13, 0x8967>>3)
|
||||||
|
testRead(t, r, 13, 0xCDAB&0x1fff)
|
||||||
|
testRead(t, r, 2, (0xcdab>>13)&0x03)
|
||||||
|
testRead(t, r, 5, (0xefcdab>>15)&0x1f)
|
||||||
|
testRead(t, r, 4, (0xefcdab>>20)&0x0f)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user