summaryrefslogtreecommitdiffstats
path: root/queue_test.go
blob: 9e7d397b2e19188567ca145cc8c894303ba0a64e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package share_test

import (
	"testing"

	"github.com/sam-rba/share"
)

func TestQueue(t *testing.T) {
	q := share.NewQueue[string]()

	vals := []string{"foo", "bar", "baz", "xyz"}
	
	go func() {
		for _, v := range vals {
			q.Enqueue <- v
		}
		close(q.Enqueue)
	}()

	go func() {
		i := 0
		for front := range q.Dequeue {
			t.Log("received", front, "from queue")
			if i > len(vals)-1 {
				t.Fatal("received too many elements from queue")
			}
			if front != vals[i] {
				t.Fatalf("received %v from queue; wanted %v", front, vals[i])
			}
			i++
		}
		if i < len(vals) {
			t.Fatal("did not receive enough values from queue")
		}
	}()
}