You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
609 B
Go
29 lines
609 B
Go
package store
|
|
|
|
import "testing"
|
|
|
|
func Test_NewCAS(t *testing.T) {
|
|
cas := NewCheckAndSet()
|
|
if exp, got := int32(0), cas.state.Load(); exp != got {
|
|
t.Fatalf("expected %d, got %d", exp, got)
|
|
}
|
|
}
|
|
|
|
func Test_CASBeginEnd(t *testing.T) {
|
|
cas := NewCheckAndSet()
|
|
if err := cas.Begin(); err != nil {
|
|
t.Fatalf("expected nil, got %v", err)
|
|
}
|
|
|
|
// Begin again, should fail
|
|
if err := cas.Begin(); err != ErrCASConflict {
|
|
t.Fatalf("expected %v, got %v", ErrCASConflict, err)
|
|
}
|
|
|
|
// End, another begin should succeed
|
|
cas.End()
|
|
if err := cas.Begin(); err != nil {
|
|
t.Fatalf("expected nil, got %v", err)
|
|
}
|
|
}
|