48 lines
955 B
Go
48 lines
955 B
Go
package mrun
|
|
|
|
import (
|
|
"context"
|
|
. "testing"
|
|
|
|
"github.com/mediocregopher/mediocre-go-lib/mcmp"
|
|
"github.com/mediocregopher/mediocre-go-lib/mtest/massert"
|
|
)
|
|
|
|
func TestHooks(t *T) {
|
|
var out []int
|
|
mkHook := func(i int) Hook {
|
|
return func(context.Context) error {
|
|
out = append(out, i)
|
|
return nil
|
|
}
|
|
}
|
|
|
|
cmp := new(mcmp.Component)
|
|
AddHook(cmp, 0, mkHook(1))
|
|
AddHook(cmp, 0, mkHook(2))
|
|
|
|
cmpA := cmp.Child("a")
|
|
AddHook(cmpA, 0, mkHook(3))
|
|
AddHook(cmpA, 999, mkHook(999)) // different key
|
|
|
|
AddHook(cmp, 0, mkHook(4))
|
|
|
|
cmpB := cmp.Child("b")
|
|
AddHook(cmpB, 0, mkHook(5))
|
|
cmpB1 := cmpB.Child("1")
|
|
AddHook(cmpB1, 0, mkHook(6))
|
|
|
|
AddHook(cmp, 0, mkHook(7))
|
|
|
|
massert.Require(t,
|
|
massert.Nil(TriggerHooks(context.Background(), cmp, 0)),
|
|
massert.Equal([]int{1, 2, 3, 4, 5, 6, 7}, out),
|
|
)
|
|
|
|
out = nil
|
|
massert.Require(t,
|
|
massert.Nil(TriggerHooksReverse(context.Background(), cmp, 0)),
|
|
massert.Equal([]int{7, 6, 5, 4, 3, 2, 1}, out),
|
|
)
|
|
}
|