1package sync
 2
 3import (
 4	"context"
 5	"strconv"
 6	"sync"
 7	"testing"
 8)
 9
10func TestWorkPool(t *testing.T) {
11	mtx := &sync.Mutex{}
12	values := make([]int, 0)
13	wp := NewWorkPool(context.Background(), 3)
14	for i := 0; i < 10; i++ {
15		id := strconv.Itoa(i)
16		i := i
17		wp.Add(id, func() {
18			mtx.Lock()
19			values = append(values, i)
20			mtx.Unlock()
21		})
22	}
23	wp.Run()
24
25	if len(values) != 10 {
26		t.Errorf("expected 10 values, got %d, %v", len(values), values)
27	}
28
29	for i := range values {
30		id := strconv.Itoa(i)
31		if wp.Status(id) {
32			t.Errorf("expected %s to be false", id)
33		}
34	}
35}