|
|
|
@ -162,10 +162,20 @@ func TestClosedChan(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
func TestSemaphore(t *testing.T) {
|
|
|
|
func TestSemaphore(t *testing.T) {
|
|
|
|
s := NewSemaphore(2)
|
|
|
|
s := NewSemaphore(2)
|
|
|
|
|
|
|
|
assertLen := func(want int) {
|
|
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
if got := s.Len(); got != want {
|
|
|
|
|
|
|
|
t.Fatalf("Len = %d, want %d", got, want)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertLen(0)
|
|
|
|
s.Acquire()
|
|
|
|
s.Acquire()
|
|
|
|
|
|
|
|
assertLen(1)
|
|
|
|
if !s.TryAcquire() {
|
|
|
|
if !s.TryAcquire() {
|
|
|
|
t.Fatal("want true")
|
|
|
|
t.Fatal("want true")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
assertLen(2)
|
|
|
|
if s.TryAcquire() {
|
|
|
|
if s.TryAcquire() {
|
|
|
|
t.Fatal("want false")
|
|
|
|
t.Fatal("want false")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -175,11 +185,15 @@ func TestSemaphore(t *testing.T) {
|
|
|
|
t.Fatal("want false")
|
|
|
|
t.Fatal("want false")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
s.Release()
|
|
|
|
s.Release()
|
|
|
|
|
|
|
|
assertLen(1)
|
|
|
|
if !s.AcquireContext(context.Background()) {
|
|
|
|
if !s.AcquireContext(context.Background()) {
|
|
|
|
t.Fatal("want true")
|
|
|
|
t.Fatal("want true")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
assertLen(2)
|
|
|
|
s.Release()
|
|
|
|
s.Release()
|
|
|
|
|
|
|
|
assertLen(1)
|
|
|
|
s.Release()
|
|
|
|
s.Release()
|
|
|
|
|
|
|
|
assertLen(0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestMap(t *testing.T) {
|
|
|
|
func TestMap(t *testing.T) {
|
|
|
|
|