]> git.giacomolli.uk - onechat/blob - build_queue_test.go
Log image and message sends
[onechat] / build_queue_test.go
1 package main
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7 )
8
9 func TestQueueStartsInMessageOrder(t *testing.T) {
10 queue := newBuildQueue()
11 queue.AddLeaf(4)
12 queue.AddLeaf(5)
13 queue.AddMerge(NodeKey{1, 2})
14 queue.AddMerge(NodeKey{1, 1})
15
16 var order []NodeKey
17
18 for {
19 key, ready := queue.Next()
20 if !ready {
21 break
22 }
23
24 order = append(order, key)
25 }
26
27 require.Equal(t, []NodeKey{{1, 1}, {0, 4}, {0, 5}, {1, 2}}, order)
28 }
29
30 func TestQueueRetriesAFailedMergeAtTheNextMessage(t *testing.T) {
31 queue := newBuildQueue()
32 queue.AddMerge(NodeKey{1, 0})
33
34 key, ready := queue.Next()
35 require.True(t, ready)
36
37 queue.Fail(key)
38
39 _, ready = queue.Next()
40 require.False(t, ready)
41
42 queue.Retry()
43
44 key, ready = queue.Next()
45 require.True(t, ready)
46 require.Equal(t, NodeKey{1, 0}, key)
47
48 queue.Done(key)
49 queue.AddMerge(NodeKey{1, 0})
50
51 _, ready = queue.Next()
52 require.True(t, ready)
53 }