aboutsummaryrefslogtreecommitdiff
path: root/bitreader_test.go
blob: c29a3bda9bb3ed85ed8232784d8e741d177031c2 (plain) (blame)
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
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[:])
	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 TestReadBitLSB(t *testing.T) {
	bitreader := ReaderLSB(TestArray[:])
	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[:])
	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.ReadBits32(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 TestReadBits32LSB(t *testing.T) {
	bitreader := ReaderLSB(TestArray[:])
	expected := []int{1720, 1768} // 11010111000, 11011101000
	for i := range expected {
		bitreader.ReadBit()
		value, err := bitreader.ReadBits32(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[:])
	expected := []bool{true, true, false, true} //00001101
	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)
		}
	}
}

func TestSkipBitsLSB(t *testing.T) {
	bitreader := ReaderLSB(TestArray[:])
	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)
		}
	}
}