-
Notifications
You must be signed in to change notification settings - Fork 211
/
results.go
81 lines (68 loc) · 1.39 KB
/
results.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package fixture
import (
"github.com/spacemeshos/go-spacemesh/common/types"
"github.com/spacemeshos/go-spacemesh/common/types/result"
)
func RLayers(layers ...result.Layer) []result.Layer {
return layers
}
func RLayerNonFinal(lid types.LayerID, blocks ...result.Block) result.Layer {
layer := result.Layer{
Layer: lid,
Blocks: blocks,
}
return layer
}
func ROpinion(lid types.LayerID, opinion types.Hash32, blocks ...result.Block) result.Layer {
layer := RLayer(lid, blocks...)
layer.Opinion = opinion
return layer
}
func RLayer(lid types.LayerID, blocks ...result.Block) result.Layer {
layer := result.Layer{
Layer: lid,
Verified: true,
Blocks: blocks,
}
return layer
}
type RBlockOpt func(*result.Block)
func Hare() RBlockOpt {
return func(b *result.Block) {
b.Hare = true
}
}
func Valid() RBlockOpt {
return func(b *result.Block) {
b.Valid = true
}
}
func Invalid() RBlockOpt {
return func(b *result.Block) {
b.Invalid = true
}
}
func Data() RBlockOpt {
return func(b *result.Block) {
b.Data = true
}
}
func Good() RBlockOpt {
return func(b *result.Block) {
b.Valid = true
b.Hare = true
b.Data = true
}
}
func RBlock(id types.BlockID, opts ...RBlockOpt) result.Block {
block := result.Block{}
block.Header.ID = id
for _, opt := range opts {
opt(&block)
}
return block
}
func IDGen(sid string) (id types.BlockID) {
copy(id[:], sid)
return id
}