mirror of
https://github.com/zoriya/bubbles.git
synced 2026-08-16 01:43:21 +00:00
70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
package key
|
|
|
|
import (
|
|
"testing"
|
|
|
|
tea "github.com/charmbracelet/bubbletea/v2"
|
|
)
|
|
|
|
func TestBinding_Enabled(t *testing.T) {
|
|
binding := NewBinding(
|
|
WithKeys("k", "up"),
|
|
WithHelp("↑/k", "move up"),
|
|
)
|
|
if !binding.Enabled() {
|
|
t.Errorf("expected key to be Enabled")
|
|
}
|
|
|
|
binding.SetEnabled(false)
|
|
if binding.Enabled() {
|
|
t.Errorf("expected key not to be Enabled")
|
|
}
|
|
|
|
binding.SetEnabled(true)
|
|
binding.Unbind()
|
|
if binding.Enabled() {
|
|
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())
|
|
}
|
|
}
|
|
}
|