...
1
16
17 package pool
18
19 import (
20 "testing"
21 "time"
22 )
23
24 func TestSemaNoTimeout(t *testing.T) {
25 s := NewSemaphore(1, 0)
26 s.Acquire()
27 released := false
28 go func() {
29 time.Sleep(10 * time.Millisecond)
30 released = true
31 s.Release()
32 }()
33 s.Acquire()
34 if !released {
35 t.Errorf("release: false, want true")
36 }
37 }
38
39 func TestSemaTimeout(t *testing.T) {
40 s := NewSemaphore(1, 5*time.Millisecond)
41 s.Acquire()
42 go func() {
43 time.Sleep(10 * time.Millisecond)
44 s.Release()
45 }()
46 if s.Acquire() {
47 t.Errorf("Acquire: true, want false")
48 }
49 time.Sleep(10 * time.Millisecond)
50 if !s.Acquire() {
51 t.Errorf("Acquire: false, want true")
52 }
53 }
54
55 func TestSemaTryAcquire(t *testing.T) {
56 s := NewSemaphore(1, 0)
57 if !s.TryAcquire() {
58 t.Errorf("TryAcquire: false, want true")
59 }
60 if s.TryAcquire() {
61 t.Errorf("TryAcquire: true, want false")
62 }
63 s.Release()
64 if !s.TryAcquire() {
65 t.Errorf("TryAcquire: false, want true")
66 }
67 }
68
View as plain text