github.com/lingyao2333/mo-zero@v1.4.1/core/syncx/atomicbool_test.go (about)

     1  package syncx
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestAtomicBool(t *testing.T) {
    10  	val := ForAtomicBool(true)
    11  	assert.True(t, val.True())
    12  	val.Set(false)
    13  	assert.False(t, val.True())
    14  	val.Set(true)
    15  	assert.True(t, val.True())
    16  	val.Set(false)
    17  	assert.False(t, val.True())
    18  	ok := val.CompareAndSwap(false, true)
    19  	assert.True(t, ok)
    20  	assert.True(t, val.True())
    21  	ok = val.CompareAndSwap(true, false)
    22  	assert.True(t, ok)
    23  	assert.False(t, val.True())
    24  	ok = val.CompareAndSwap(true, false)
    25  	assert.False(t, ok)
    26  	assert.False(t, val.True())
    27  }