mirror of https://github.com/poanetwork/gecko.git
80 lines
1.3 KiB
Go
80 lines
1.3 KiB
Go
|
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
||
|
// See the file LICENSE for licensing terms.
|
||
|
|
||
|
package events
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/ava-labs/gecko/ids"
|
||
|
)
|
||
|
|
||
|
func TestBlocker(t *testing.T) {
|
||
|
b := Blocker(nil)
|
||
|
|
||
|
a := &blockable{}
|
||
|
a.Default()
|
||
|
|
||
|
id0 := GenerateID()
|
||
|
id1 := GenerateID()
|
||
|
id2 := GenerateID()
|
||
|
|
||
|
calledDep := new(bool)
|
||
|
a.dependencies = func() ids.Set {
|
||
|
*calledDep = true
|
||
|
|
||
|
s := ids.Set{}
|
||
|
s.Add(id0, id1)
|
||
|
return s
|
||
|
}
|
||
|
calledFill := new(bool)
|
||
|
a.fulfill = func(ids.ID) {
|
||
|
*calledFill = true
|
||
|
}
|
||
|
calledAbandon := new(bool)
|
||
|
a.abandon = func(ids.ID) {
|
||
|
*calledAbandon = true
|
||
|
}
|
||
|
calledUpdate := new(bool)
|
||
|
a.update = func() {
|
||
|
*calledUpdate = true
|
||
|
}
|
||
|
|
||
|
b.Register(a)
|
||
|
|
||
|
switch {
|
||
|
case !*calledDep, *calledFill, *calledAbandon, !*calledUpdate:
|
||
|
t.Fatalf("Called wrong function")
|
||
|
}
|
||
|
|
||
|
b.Fulfill(id2)
|
||
|
b.Abandon(id2)
|
||
|
|
||
|
switch {
|
||
|
case !*calledDep, *calledFill, *calledAbandon, !*calledUpdate:
|
||
|
t.Fatalf("Called wrong function")
|
||
|
}
|
||
|
|
||
|
b.Fulfill(id0)
|
||
|
|
||
|
switch {
|
||
|
case !*calledDep, !*calledFill, *calledAbandon, !*calledUpdate:
|
||
|
t.Fatalf("Called wrong function")
|
||
|
}
|
||
|
|
||
|
b.Abandon(id0)
|
||
|
|
||
|
switch {
|
||
|
case !*calledDep, !*calledFill, *calledAbandon, !*calledUpdate:
|
||
|
t.Fatalf("Called wrong function")
|
||
|
}
|
||
|
|
||
|
b.Abandon(id1)
|
||
|
|
||
|
switch {
|
||
|
case !*calledDep, !*calledFill, !*calledAbandon, !*calledUpdate:
|
||
|
t.Fatalf("Called wrong function")
|
||
|
}
|
||
|
|
||
|
}
|