|
|
|
@ -97,19 +97,19 @@ func TestBitReader_ReadBits8(t *testing.T) {
|
|
|
|
|
br := nazabits.NewBitReader(v)
|
|
|
|
|
// {0 01 1 00 00, 00 11 100 1, 0011 0 000, 0011 1001}
|
|
|
|
|
// 0,01,1 00,00 00, 11 100,100110, 0000011,
|
|
|
|
|
assert.Equal(t, uint8(0), br.ReadBits(1))
|
|
|
|
|
assert.Equal(t, uint8(1), br.ReadBits(2))
|
|
|
|
|
assert.Equal(t, uint8(4), br.ReadBits(3))
|
|
|
|
|
assert.Equal(t, uint8(0), br.ReadBits(4))
|
|
|
|
|
assert.Equal(t, uint8(28), br.ReadBits(5))
|
|
|
|
|
assert.Equal(t, uint8(38), br.ReadBits(6))
|
|
|
|
|
assert.Equal(t, uint8(3), br.ReadBits(7))
|
|
|
|
|
assert.Equal(t, uint8(0), br.ReadBits8(1))
|
|
|
|
|
assert.Equal(t, uint8(1), br.ReadBits8(2))
|
|
|
|
|
assert.Equal(t, uint8(4), br.ReadBits8(3))
|
|
|
|
|
assert.Equal(t, uint8(0), br.ReadBits8(4))
|
|
|
|
|
assert.Equal(t, uint8(28), br.ReadBits8(5))
|
|
|
|
|
assert.Equal(t, uint8(38), br.ReadBits8(6))
|
|
|
|
|
assert.Equal(t, uint8(3), br.ReadBits8(7))
|
|
|
|
|
|
|
|
|
|
br = nazabits.NewBitReader(v)
|
|
|
|
|
// {0011 0000, 0011 1001, 0 011 0000, 0011 1001}
|
|
|
|
|
assert.Equal(t, uint8(48), br.ReadBits(8))
|
|
|
|
|
//assert.Equal(t, uint8(114), br.ReadBits(9))
|
|
|
|
|
//assert.Equal(t, uint8(385), br.ReadBits(10))
|
|
|
|
|
assert.Equal(t, uint8(48), br.ReadBits8(8))
|
|
|
|
|
//assert.Equal(t, uint8(114), br.ReadBits8(9))
|
|
|
|
|
//assert.Equal(t, uint8(385), br.ReadBits8(10))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestBitWriter_WriteBit(t *testing.T) {
|
|
|
|
@ -132,26 +132,44 @@ func TestBitWriter_WriteBit(t *testing.T) {
|
|
|
|
|
assert.Equal(t, uint8(57), v[1])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestBitWriter_WriteBits(t *testing.T) {
|
|
|
|
|
func TestBitWriter_WriteBits8(t *testing.T) {
|
|
|
|
|
v := make([]byte, 2)
|
|
|
|
|
bw := nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits(1, 0)
|
|
|
|
|
bw.WriteBits(2, 1)
|
|
|
|
|
bw.WriteBits(3, 4)
|
|
|
|
|
bw.WriteBits(4, 0)
|
|
|
|
|
bw.WriteBits(5, 28)
|
|
|
|
|
bw.WriteBits(1, 1)
|
|
|
|
|
bw.WriteBits8(1, 0)
|
|
|
|
|
bw.WriteBits8(2, 1)
|
|
|
|
|
bw.WriteBits8(3, 4)
|
|
|
|
|
bw.WriteBits8(4, 0)
|
|
|
|
|
bw.WriteBits8(5, 28)
|
|
|
|
|
bw.WriteBits8(1, 1)
|
|
|
|
|
assert.Equal(t, uint8(48), v[0])
|
|
|
|
|
assert.Equal(t, uint8(57), v[1])
|
|
|
|
|
|
|
|
|
|
v = make([]byte, 1)
|
|
|
|
|
bw = nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits(3, 1+8+32+128)
|
|
|
|
|
bw.WriteBits8(3, 1+8+32+128)
|
|
|
|
|
assert.Equal(t, uint8(1<<5), v[0])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestBitWriter_WriteBits16(t *testing.T) {
|
|
|
|
|
v := make([]byte, 2)
|
|
|
|
|
bw := nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits16(1, 0)
|
|
|
|
|
bw.WriteBits16(2, 1)
|
|
|
|
|
bw.WriteBits16(3, 4)
|
|
|
|
|
bw.WriteBits16(4, 0)
|
|
|
|
|
bw.WriteBits16(5, 28)
|
|
|
|
|
bw.WriteBits16(1, 1)
|
|
|
|
|
assert.Equal(t, uint8(48), v[0])
|
|
|
|
|
assert.Equal(t, uint8(57), v[1])
|
|
|
|
|
|
|
|
|
|
v = make([]byte, 1)
|
|
|
|
|
bw = nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits16(3, 1+8+32+128)
|
|
|
|
|
assert.Equal(t, uint8(1<<5), v[0])
|
|
|
|
|
|
|
|
|
|
v = make([]byte, 2)
|
|
|
|
|
bw = nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits(16, 0xFFFF)
|
|
|
|
|
bw.WriteBits16(16, 0xFFFF)
|
|
|
|
|
assert.Equal(t, uint8(0xFF), v[0])
|
|
|
|
|
assert.Equal(t, uint8(0xFF), v[1])
|
|
|
|
|
}
|
|
|
|
@ -163,18 +181,18 @@ func BenchmarkGetBits16(b *testing.B) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func BenchmarkBitReader_ReadBits(b *testing.B) {
|
|
|
|
|
func BenchmarkBitReader_ReadBits8(b *testing.B) {
|
|
|
|
|
v := []byte{48, 57}
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
br := nazabits.NewBitReader(v)
|
|
|
|
|
br.ReadBits(9)
|
|
|
|
|
br.ReadBits8(9)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func BenchmarkBitWriter_WriteBits(b *testing.B) {
|
|
|
|
|
func BenchmarkBitWriter_WriteBits16(b *testing.B) {
|
|
|
|
|
v := make([]byte, 2)
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
bw := nazabits.NewBitWriter(v)
|
|
|
|
|
bw.WriteBits(9, 28)
|
|
|
|
|
bw.WriteBits16(9, 28)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|