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  }