diff --git a/atomic.go b/atomic.go index cd4aaa2..290b884 100644 --- a/atomic.go +++ b/atomic.go @@ -298,3 +298,7 @@ func (f *Float64) Sub(s float64) float64 { func (f *Float64) CAS(old, new float64) bool { return atomic.CompareAndSwapUint64(&f.v, math.Float64bits(old), math.Float64bits(new)) } + +// Value shadows the type of the same name from sync/atomic +// https://godoc.org/sync/atomic#Value +type Value struct{ atomic.Value } diff --git a/atomic_test.go b/atomic_test.go index c21b831..284f786 100644 --- a/atomic_test.go +++ b/atomic_test.go @@ -23,6 +23,7 @@ package atomic import ( "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -131,3 +132,16 @@ func TestFloat64(t *testing.T) { require.Equal(t, float64(42.5), atom.Add(0.5), "Add didn't work.") require.Equal(t, float64(42.0), atom.Sub(0.5), "Sub didn't work.") } + +func TestValue(t *testing.T) { + var v Value + assert.Nil(t, v.Load(), "initial Value is not nil") + + v.Store(42) + assert.Equal(t, 42, v.Load()) + + v.Store(84) + assert.Equal(t, 84, v.Load()) + + assert.Panics(t, func() { v.Store("foo") }) +}