github.com/camlistore/go4@v0.0.0-20200104003542-c7e774b10ea0/syncutil/sem_test.go (about) 1 package syncutil_test 2 3 import ( 4 "testing" 5 6 "go4.org/syncutil" 7 ) 8 9 func TestSem(t *testing.T) { 10 s := syncutil.NewSem(5) 11 12 if err := s.Acquire(2); err != nil { 13 t.Fatal(err) 14 } 15 if err := s.Acquire(2); err != nil { 16 t.Fatal(err) 17 } 18 19 go func() { 20 s.Release(2) 21 s.Release(2) 22 }() 23 if err := s.Acquire(5); err != nil { 24 t.Fatal(err) 25 } 26 } 27 28 func TestSemErr(t *testing.T) { 29 s := syncutil.NewSem(5) 30 if err := s.Acquire(6); err == nil { 31 t.Fatal("Didn't get expected error for large acquire.") 32 } 33 }