bitmask - bitmask_test.go
1 package bitmask
2
3 import "testing"
4
5 func TestBitMask(t *testing.T) {
6 tests := []struct {
7 pos int
8 data bool
9 recheck bool
10 }{
11 {0, true, true},
12 {1, true, true},
13 {2, true, true},
14 {3, false, false},
15 {4, true, true},
16 {5, true, false},
17 {6, true, true},
18 {7, true, true},
19 {3, true, true},
20 {5, false, true},
21 {8, false, true},
22 {9, true, true},
23 {15, true, false},
24 {15, false, true},
25 {16, true, false},
26 {16, false, false},
27 {16, false, true},
28 {31, true, true},
29 {30, true, true},
30 {29, true, true},
31 {24, true, true},
32 }
33 b := New(32)
34 for n, test := range tests {
35 b.Set(test.pos, test.data)
36 if got := b.Get(test.pos); got != test.data {
37 t.Errorf("test 1-%d: expecting %v, got %v", n+1, test.data, got)
38 }
39 }
40 for n, test := range tests {
41 if !test.recheck {
42 continue
43 }
44 if got := b.Get(test.pos); got != test.data {
45 t.Errorf("test 2-%d: expecting %v, got %v", n+1, test.data, got)
46 }
47 }
48 }
49
50 func TestSetIfNot(t *testing.T) {
51 tests := []struct {
52 pos int
53 data bool
54 ret bool
55 }{
56 {0, true, true},
57 {1, true, true},
58 {2, true, true},
59 {3, false, false},
60 {4, true, true},
61 {5, true, true},
62 {6, true, true},
63 {7, true, true},
64 {3, true, true},
65 {5, false, true},
66 {8, false, false},
67 {9, true, true},
68 {15, true, true},
69 {15, false, true},
70 {16, true, true},
71 {16, false, true},
72 {16, false, false},
73 {31, true, true},
74 {30, true, true},
75 {29, true, true},
76 {24, true, true},
77 }
78 b := New(32)
79 for n, test := range tests {
80 if got := b.SetIfNot(test.pos, test.data); got != test.ret {
81 t.Errorf("test %d: expecting %v, got %v", n+1, test.ret, got)
82 }
83 }
84 }