-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbitflags_test.go
64 lines (56 loc) · 1.46 KB
/
bitflags_test.go
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
package bitflags_test
import (
"testing"
"github.com/imacks/bitflags-go"
)
type fruits int
// different types of fruits
const (
apple fruits = 1 << iota
orange
banana
durian
)
func TestSet(t *testing.T) {
var basket fruits
if bitflags.Has(basket, apple) {
t.Fatal("should not have apple in empty basket")
}
basket = bitflags.Set(basket, apple)
if !bitflags.Has(basket, apple) {
t.Fatal("should have apple in basket")
}
// all operations are idempotent
basket = bitflags.Set(basket, apple)
if !bitflags.Has(basket, apple) {
t.Fatal("should have apple in basket")
}
if bitflags.Has(basket, orange) {
t.Fatal("should not have orange in basket")
}
basket = bitflags.Set(basket, orange)
if !bitflags.Has(basket, orange) {
t.Fatal("should have orange in basket")
}
basket = bitflags.Del(basket, apple)
if bitflags.Has(basket, apple) {
t.Fatal("should not have apple in basket")
}
// all operations are idempotent
basket = bitflags.Del(basket, apple)
if bitflags.Has(basket, apple) {
t.Fatal("should not have apple in basket")
}
basket = bitflags.Set(basket, banana, durian)
if !bitflags.Has(basket, banana) || !bitflags.Has(basket, durian) {
t.Fatal("should have banana and durian in basket")
}
basket = bitflags.Toggle(basket, banana)
if bitflags.Has(basket, banana) {
t.Fatal("should not have banana in basket")
}
basket = bitflags.Toggle(basket, banana)
if !bitflags.Has(basket, banana) {
t.Fatal("should have banana in basket")
}
}