1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
package main
import (
"testing"
)
// 01110001, 00001101, 00000000, 00000000, 10100010, 00011011, 00000000, 00000000, 11001100
var TestArray = [...]byte{113, 13, 0, 0, 162, 27, 0, 0, 204}
func TestReadBit(t *testing.T) {
bitreader := Reader(TestArray[:], false)
expected := []bool{false, true, true, true}
for i := range expected {
value, err := bitreader.ReadBit()
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("ReadBit FAIL for index %d: Expected %t, Got %t", i, expected[i], value)
}
}
}
func TestReadBitLE(t *testing.T) {
bitreader := Reader(TestArray[:], true)
expected := []bool{true, false, false, false}
for i := range expected {
value, err := bitreader.ReadBit()
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("ReadBitLSB FAIL for index %d: Expected %t, Got %t", i, expected[i], value)
}
}
}
func TestReadBits32(t *testing.T) {
bitreader := Reader(TestArray[:], false)
expected := []int{3793354753, 2288779267} // 11100010000110100000000000000001, 10001000011011000000000000000011
expectedBool := []bool{false, false}
for i := range expected {
bool, err := bitreader.ReadBit()
if bool != expectedBool[i] {
t.Fatalf("ReadBits32 ReadBit FAIL for index %d: Expected %t, Got %t", i, expectedBool[i], bool)
}
if err != nil {
t.Fatal(err)
}
value, err := bitreader.ReadBits(32)
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("ReadBits32 FAIL for index %d: Expected %d, Got %d", i, expected[i], value)
}
}
}
func TestReadBitsLE(t *testing.T) {
bitreader := Reader(TestArray[:], true)
expected := []int{1720, 1768} // 11010111000, 11011101000
for i := range expected {
bitreader.ReadBit()
value, err := bitreader.ReadBits(32)
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("ReadBits32LSB FAIL for index %d: Expected %d, Got %d", i, expected[i], value)
}
}
}
func TestSkipBits(t *testing.T) {
bitreader := Reader(TestArray[:], false)
expected := []bool{true, true, false, true} //00001101
err := bitreader.SkipBits(12)
if err != nil {
t.Fatal(err)
}
for i := range expected {
value, err := bitreader.ReadBit()
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("SkipBits ReadBit FAIL for index %d: Expected %t, Got %t", i, expected[i], value)
}
}
}
func TestSkipBitsLE(t *testing.T) {
bitreader := Reader(TestArray[:], true)
expected := []bool{false, false, false, false} //10110000
bitreader.SkipBits(12)
for i := range expected {
value, err := bitreader.ReadBit()
if err != nil {
t.Fatal(err)
}
if value != expected[i] {
t.Fatalf("SkipBits ReadBit FAIL for index %d: Expected %t, Got %t", i, expected[i], value)
}
}
}
|