]> git.giacomolli.uk - onechat/blob - build_queue_test.go
Check spacing between Go statement blocks
[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 }