1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package syncx
- import (
- "sync"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestBarrier_Guard(t *testing.T) {
- const total = 10000
- var barrier Barrier
- var count int
- var wg sync.WaitGroup
- wg.Add(total)
- for i := 0; i < total; i++ {
- go barrier.Guard(func() {
- count++
- wg.Done()
- })
- }
- wg.Wait()
- assert.Equal(t, total, count)
- }
- func TestBarrierPtr_Guard(t *testing.T) {
- const total = 10000
- barrier := new(Barrier)
- var count int
- wg := new(sync.WaitGroup)
- wg.Add(total)
- for i := 0; i < total; i++ {
- go barrier.Guard(func() {
- count++
- wg.Done()
- })
- }
- wg.Wait()
- assert.Equal(t, total, count)
- }
- func TestGuard(t *testing.T) {
- const total = 10000
- var count int
- var lock sync.Mutex
- wg := new(sync.WaitGroup)
- wg.Add(total)
- for i := 0; i < total; i++ {
- go Guard(&lock, func() {
- count++
- wg.Done()
- })
- }
- wg.Wait()
- assert.Equal(t, total, count)
- }
|