all repos

scratch @ 4eff1ebb0d1633167671e5370c2bd4e803d72c83

⭐ me doing recreational ~~drugs~~ programming

scratch/algos/queue_test.go (view raw)

1
package algos
2
3
import "testing"
4
5
func TestQueue(t *testing.T) {
6
	q := Queue[int]{}
7
8
	q.Push(5)
9
	q.Push(7)
10
	q.Push(9)
11
12
	v, ok := q.Pop()
13
	is(t, ok, true)
14
	is(t, v, 5)
15
16
	is(t, q.Len, 2)
17
18
	q.Push(11)
19
20
	v, ok = q.Pop()
21
	is(t, ok, true)
22
	is(t, v, 7)
23
24
	v, ok = q.Pop()
25
	is(t, ok, true)
26
	is(t, v, 9)
27
28
	is(t, q.Peek(), 11)
29
30
	v, ok = q.Pop()
31
	is(t, ok, true)
32
	is(t, v, 11)
33
34
	_, ok = q.Pop()
35
	is(t, ok, false)
36
37
	// everything works after removing all elements
38
	q.Push(69420)
39
	is(t, q.Peek(), 69420)
40
41
	v, ok = q.Pop()
42
	is(t, ok, true)
43
	is(t, v, 69420)
44
}
45
46
func is[T comparable](tb testing.TB, a, b T) {
47
	tb.Helper()
48
	if a != b {
49
		tb.Fatalf("%+v and %+v are not equal\n", a, b)
50
	}
51
}