package options import "testing" func TestHooks_Append(t *testing.T) { fn1 := func() {} fn2 := func() {} hs := &Hooks{} hs.Append(fn1, fn2) if len(*hs) != 2 { t.Fatalf("unexpected Append error") } } func TestHooks_Replace(t *testing.T) { fn1 := func() {} fn2 := func() {} hs := &Hooks{} hs.Append(fn1, fn2, fn1) if len(*hs) != 3 { t.Fatalf("unexpected Append error") } hs.Replace(fn1, fn2) if len(*hs) != 2 { t.Fatalf("unexpected Replace error") } } func TestHooks_EachNext(t *testing.T) { n := 5 fn1 := func() { n *= 2 } fn2 := func() { n -= 10 } hs := &Hooks{} hs.Append(fn1, fn2) hs.EachNext(func(h Hook) { h.(func())() }) if n != 0 { t.Fatalf("unexpected EachNext") } } func TestHooks_EachPrev(t *testing.T) { n := 5 fn1 := func() { n *= 2 } fn2 := func() { n -= 10 } hs := &Hooks{} hs.Append(fn2, fn1) hs.EachPrev(func(h Hook) { h.(func())() }) if n != 0 { t.Fatalf("unexpected EachPrev") } }