github.com/bhameyie/otto@v0.2.1-0.20160406174117-16052efa52ec/helper/semaphore/semaphore_test.go (about) 1 package semaphore 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestSemaphore(t *testing.T) { 9 s := New(2) 10 timer := time.AfterFunc(time.Second, func() { 11 panic("deadlock") 12 }) 13 defer timer.Stop() 14 15 s.Acquire() 16 if !s.TryAcquire() { 17 t.Fatalf("should acquire") 18 } 19 if s.TryAcquire() { 20 t.Fatalf("should not acquire") 21 } 22 s.Release() 23 s.Release() 24 25 // This release should panic 26 defer func() { 27 r := recover() 28 if r == nil { 29 t.Fatalf("should panic") 30 } 31 }() 32 s.Release() 33 }