...
1 package internal
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestAtomicBoolean(t *testing.T) {
10 t.Run("defaults to false", func(t *testing.T) {
11 var b AtomicBoolean
12 assert.False(t, b.Get())
13 })
14
15 t.Run("Set", func(t *testing.T) {
16 var b AtomicBoolean
17 b.Set(true)
18 assert.True(t, b.Get())
19 b.Set(false)
20 assert.False(t, b.Get())
21 })
22
23 t.Run("GetAndSet", func(t *testing.T) {
24 var b AtomicBoolean
25 assert.False(t, b.GetAndSet(true))
26 assert.True(t, b.Get())
27 assert.True(t, b.GetAndSet(false))
28 assert.False(t, b.Get())
29 })
30
31 t.Run("data race", func(t *testing.T) {
32
33 done := make(chan struct{})
34 var b AtomicBoolean
35 go func() {
36 for i := 0; i < 100; i++ {
37 b.Set(true)
38 }
39 done <- struct{}{}
40 }()
41 go func() {
42 for i := 0; i < 100; i++ {
43 b.Get()
44 }
45 done <- struct{}{}
46 }()
47 <-done
48 <-done
49 })
50 }
51
View as plain text