package workerpool

import (
	"sync"
	"testing"

	"github.com/stretchr/testify/assert"
	"go.skia.org/infra/go/testutils/unittest"
)

func TestWorkerPool(t *testing.T) {
	unittest.SmallTest(t)

	// Basic functionality.
	p := New(3)
	count := 0
	mtx := sync.Mutex{}
	for i := 0; i < 5; i++ {
		p.Go(func() {
			mtx.Lock()
			defer mtx.Unlock()
			count++
		})
	}
	p.Wait()
	assert.Equal(t, 5, count)

	// After Wait(), p.Go() and p.Wait() should panic.
	assert.Panics(t, func() {
		p.Go(func() {
			return
		})
	})
	assert.Panics(t, func() {
		p.Wait()
	})
}
