-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbit_test.go
More file actions
82 lines (68 loc) · 1.65 KB
/
bit_test.go
File metadata and controls
82 lines (68 loc) · 1.65 KB
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
package kronasje
import (
"testing"
"math"
)
func TestStepField(t *testing.T) {
actual := stepField(1, 2, 1)
expected := bit(2) + bit(1)
equals(t, expected, actual)
// 11100
actual = stepField(3, 5, 1)
expected = bit(5) + bit(4) + bit(3)
equals(t, expected, actual)
actual = stepField(3, 5, 2)
expected = bit(5) + bit(3)
equals(t, expected, actual)
actual = stepField(3, 5, 3)
expected = bit(3)
equals(t, expected, actual)
}
func TestRangeFieldFunction(t *testing.T) {
// It should return just bit value if from equals to
actual := rangeField(2, 2)
expected := bit(2)
equals(t, expected, actual)
// e.g. 2-3 should produce binary 5 (110)
actual = rangeField(2, 3)
expected = uint64(6)
equals(t, expected, actual)
// e.g. 3-6 should produce binary 55 (111100)
actual = rangeField(3, 6)
expected = bits(6) ^ (bit(3) - 1)
// 111111 ^ 111
equals(t, expected, actual)
//1000000 -> 111111 ^ 11
expected = (bit(7) - 1) ^ bits(3-1)
equals(t, expected, actual)
}
func TestBitsFunction(t *testing.T) {
// 1111111
actual := bits(7)
expected := uint64(127)
equals(t, expected, actual)
// 111
actual = bits(3)
expected = uint64(7)
equals(t, expected, actual)
}
func TestBitFunction(t *testing.T) {
actual := bit(2)
expected := uint64(2)
equals(t, expected, actual)
// binary 8 (1000)
actual = bit(4)
expected = uint64(8)
equals(t, expected, actual)
actual = uint64(math.Pow(2, 63.0))
expected = uint64(1) << 63
equals(t, expected, actual)
// bits(n)+1 should equal bit(n+1) and
actual = bit(7)
expected = bits(6) + 1
equals(t, expected, actual)
// vica versa
actual = bit(7) - 1
expected = bits(6)
equals(t, expected, actual)
}