MCPcopy Index your code
hub / github.com/coder/coder / TestQueue

Function TestQueue

cli/cliutil/queue_test.go:12–110  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestQueue(t *testing.T) {
13 t.Parallel()
14
15 t.Run("DropsFirst", func(t *testing.T) {
16 t.Parallel()
17
18 q := cliutil.NewQueue[int](10)
19 require.Equal(t, 0, q.Len())
20
21 for i := 0; i < 20; i++ {
22 err := q.Push(i)
23 require.NoError(t, err)
24 if i < 10 {
25 require.Equal(t, i+1, q.Len())
26 } else {
27 require.Equal(t, 10, q.Len())
28 }
29 }
30
31 val, ok := q.Pop()
32 require.True(t, ok)
33 require.Equal(t, 10, val)
34 require.Equal(t, 9, q.Len())
35 })
36
37 t.Run("Pop", func(t *testing.T) {
38 t.Parallel()
39
40 q := cliutil.NewQueue[int](10)
41 for i := 0; i < 5; i++ {
42 err := q.Push(i)
43 require.NoError(t, err)
44 }
45
46 // No blocking, should pop immediately.
47 for i := 0; i < 5; i++ {
48 val, ok := q.Pop()
49 require.True(t, ok)
50 require.Equal(t, i, val)
51 }
52
53 // Pop should block until the next push.
54 go func() {
55 err := q.Push(55)
56 assert.NoError(t, err)
57 }()
58
59 item, ok := q.Pop()
60 require.True(t, ok)
61 require.Equal(t, 55, item)
62 })
63
64 t.Run("Close", func(t *testing.T) {
65 t.Parallel()
66
67 q := cliutil.NewQueue[int](10)
68
69 done := make(chan bool)

Callers

nothing calls this directly

Calls 8

WithPredicateMethod · 0.80
RunMethod · 0.65
CloseMethod · 0.65
EqualMethod · 0.45
LenMethod · 0.45
PushMethod · 0.45
PopMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected