]> git.giacomolli.uk - onechat/blob - build_queue_test.go
Name and order the probe code
[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         for {
18                 key, ready := queue.Next()
19                 if !ready {
20                         break
21                 }
22
23                 order = append(order, key)
24         }
25
26         require.Equal(t, []nodeKey{{1, 1}, {0, 4}, {0, 5}, {1, 2}}, order)
27 }
28
29 func TestQueueRetriesAFailedMergeAtTheNextMessage(t *testing.T) {
30         queue := newBuildQueue()
31         queue.AddMerge(nodeKey{1, 0})
32
33         key, ready := queue.Next()
34         require.True(t, ready)
35
36         queue.Fail(key)
37         _, ready = queue.Next()
38         require.False(t, ready)
39
40         queue.Retry()
41         key, ready = queue.Next()
42         require.True(t, ready)
43         require.Equal(t, nodeKey{1, 0}, key)
44
45         queue.Done(key)
46         queue.AddMerge(nodeKey{1, 0})
47         _, ready = queue.Next()
48         require.True(t, ready)
49 }