-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueue_test.go
49 lines (33 loc) · 916 Bytes
/
queue_test.go
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
38
39
40
41
42
43
44
45
46
47
48
49
package pubsub
import (
"testing"
"github.com/alecthomas/assert/v2"
)
func TestQueue(t *testing.T) {
q := newQueue[int](2)
q.Enqueue(1)
q.Enqueue(2)
assert.Equal(t, 4, len(q.circ), "capacity")
assert.Equal(t, 1, q.PendingOrZero(), "first item")
q.Dequeue()
assert.Equal(t, false, q.IsEmpty(), "not empty")
q.Enqueue(3)
assert.Equal(t, 2, q.PendingOrZero(), "second item")
q.Dequeue()
assert.Equal(t, 3, q.PendingOrZero(), "third item")
q.Dequeue()
q.Enqueue(4)
q.Enqueue(5)
q.Enqueue(6)
assert.Equal(t, 4, len(q.circ), "capacity after grow")
assert.Equal(t, 4, q.PendingOrZero(), "fourth item")
q.Dequeue()
assert.Equal(t, 5, q.PendingOrZero(), "fifth item")
q.Dequeue()
assert.Equal(t, 6, q.PendingOrZero(), "sixth item")
q.Dequeue()
assert.Equal(t, true, q.IsEmpty(), "empty")
q.Dequeue()
q.Dequeue()
assert.Equal(t, true, q.IsEmpty(), "empty after invalid dequeues")
}