github.com/lingyao2333/mo-zero@v1.4.1/core/syncx/donechan_test.go (about) 1 package syncx 2 3 import ( 4 "sync" 5 "testing" 6 ) 7 8 func TestDoneChanClose(t *testing.T) { 9 doneChan := NewDoneChan() 10 11 for i := 0; i < 5; i++ { 12 doneChan.Close() 13 } 14 } 15 16 func TestDoneChanDone(t *testing.T) { 17 var waitGroup sync.WaitGroup 18 doneChan := NewDoneChan() 19 20 waitGroup.Add(1) 21 go func() { 22 <-doneChan.Done() 23 waitGroup.Done() 24 }() 25 26 for i := 0; i < 5; i++ { 27 doneChan.Close() 28 } 29 30 waitGroup.Wait() 31 }