package model_test import ( "testing" "github.com/derailed/k9s/internal/model" "github.com/stretchr/testify/assert" ) func TestHints(t *testing.T) { uu := map[string]struct { hh model.MenuHints e int }{ "none": { model.MenuHints{}, 0, }, "hints": { model.MenuHints{ {Mnemonic: "a", Description: "blee"}, {Mnemonic: "b", Description: "fred"}, }, 2, }, } for k, u := range uu { t.Run(k, func(t *testing.T) { h := model.NewHint() l := hintL{count: -1} h.AddListener(&l) h.SetHints(u.hh) assert.Equal(t, u.e, l.count) }) } } func TestHintRemoveListener(t *testing.T) { h := model.NewHint() l1, l2, l3 := &hintL{}, &hintL{}, &hintL{} h.AddListener(l1) h.AddListener(l2) h.AddListener(l3) h.RemoveListener(l2) h.RemoveListener(l3) h.RemoveListener(l1) h.SetHints(model.MenuHints{ model.MenuHint{Mnemonic: "a", Description: "Blee"}, }) assert.Equal(t, 0, l1.count) assert.Equal(t, 0, l2.count) assert.Equal(t, 0, l3.count) } type hintL struct { count int } func (h *hintL) HintsChanged(hh model.MenuHints) { h.count++ h.count += len(hh) }