From 8b901d55ffb8342a62209c0a91395b501f85c6d9 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 17 Apr 2025 16:45:08 +0200 Subject: [PATCH] chore(key): add Matches test --- key/key_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/key/key_test.go b/key/key_test.go index 359a4c2..aea0ef3 100644 --- a/key/key_test.go +++ b/key/key_test.go @@ -2,6 +2,8 @@ package key import ( "testing" + + tea "github.com/charmbracelet/bubbletea/v2" ) func TestBinding_Enabled(t *testing.T) { @@ -24,3 +26,44 @@ func TestBinding_Enabled(t *testing.T) { t.Errorf("expected key not to be Enabled") } } + +func TestMatches(t *testing.T) { + cases := []struct { + key tea.KeyMsg + bindings []Binding + }{ + { + key: tea.KeyPressMsg{Code: 'k', Text: "k"}, + bindings: []Binding{ + NewBinding( + WithKeys("k", "up"), + WithHelp("↑/k", "move up"), + ), + }, + }, + { + key: tea.KeyPressMsg{Code: '/', Mod: tea.ModShift, Text: "?"}, + bindings: []Binding{ + NewBinding( + WithKeys("?"), + WithHelp("?", "search"), + ), + }, + }, + { + key: tea.KeyPressMsg{Code: 'a', Mod: tea.ModCtrl}, + bindings: []Binding{ + NewBinding( + WithKeys("ctrl+a"), + WithHelp("ctrl+a", "select all"), + ), + }, + }, + } + + for i, c := range cases { + if !Matches(c.key, c.bindings...) { + t.Errorf("case %d: expected key (%q) to match binding(s)", i+1, c.key.String()) + } + } +}