This repository has been archived by the owner on Jan 10, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbool_test.go
138 lines (105 loc) · 2.09 KB
/
bool_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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package atomicvalue
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestBoolSetGet(t *testing.T) {
assert := assert.New(t)
var a Bool
assert.False(a.Get())
a.Set(true)
assert.True(a.Get())
}
func TestBoolSetTrue(t *testing.T) {
assert := assert.New(t)
var a Bool
assert.False(a.Get())
a.SetTrue()
assert.True(a.Get())
}
func TestBoolSetFalse(t *testing.T) {
assert := assert.New(t)
var a Bool
a.SetTrue()
assert.True(a.Get())
a.SetFalse()
assert.False(a.Get())
}
func TestBoolSwap(t *testing.T) {
assert := assert.New(t)
var a Bool
assert.False(a.Swap(false))
assert.False(a.Get())
assert.False(a.Swap(true))
assert.True(a.Get())
assert.True(a.Swap(false))
assert.False(a.Get())
}
func TestBoolCompareAndSwap(t *testing.T) {
assert := assert.New(t)
tests := []struct {
init bool
old bool
new bool
result bool
store bool
}{
{false, true, false, false, false},
{false, false, true, true, true},
{false, false, false, true, false},
{false, true, true, false, false},
{true, true, false, true, false},
{true, false, true, false, true},
{true, true, true, true, true},
{true, false, false, false, true},
}
for _, tt := range tests {
var a Bool
a.Set(tt.init)
r := a.CompareAndSwap(tt.old, tt.new)
assert.Equal(tt.result, r, "result")
assert.Equal(tt.store, a.Get(), "store")
}
}
func BenchmarkBoolB2u(b *testing.B) {
for n := 0; n < b.N; n++ {
b2u(true)
b2u(false)
}
}
func BenchmarkBoolGet(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.Get()
}
}
func BenchmarkBoolSet(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.Set(true)
}
}
func BenchmarkBoolSetTrue(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.SetTrue()
}
}
func BenchmarkBoolSetFalse(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.SetFalse()
}
}
func BenchmarkBoolCompareAndSwap_1(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.CompareAndSwap(false, true)
}
}
func BenchmarkBoolCompareAndSwap_2(b *testing.B) {
var a Bool
for n := 0; n < b.N; n++ {
a.CompareAndSwap(true, false)
}
}